訂閱標簽界面(調(diào)整cell內(nèi)部結構)

一.搭建界面

1.分析界面 需要使用什么控制器來管理

我們根據(jù)需求 ? 可以用一個UITableViewController來管理

2.分析需求,我們發(fā)現(xiàn)cell的樣式是固定的 ?系統(tǒng)的cell不能滿足我們的需求

我們需要自定義cell ? ?創(chuàng)建cell類,同時創(chuàng)建xib

3.如何加載xib文件

3.1 可以提供一個類方法快速創(chuàng)建

+ (instancetype)cell

{return[[[NSBundlemainBundle]loadNibNamed:@"XMGSubTagCell"owner:niloptions:nil]firstObject]; ?}

通過NSBundle加載xib描述cell,一定要記得綁定標示符, 而且在創(chuàng)建cell的時候 ?還要判斷是否為空

XTSubTagCell*cell = [tableViewdequeueReusableCellWithIdentifier:ID];

if(cell ==nil) {

cell = [XTSubTagCellcell];

}

3.2 可以通過注冊的方式 ? ? ?可以不用綁定標識符,也可以不做判斷是否為空

二.加載數(shù)據(jù)

1.查看接口文檔(基本url,請求參數(shù),請求方式)

2.驗證接口能否請求成功,查看服務器返回的數(shù)據(jù) ? 為什么?

(接口文檔有可能描述錯誤,要自己去驗證一下)

3.發(fā)送AFN請求

3.1 創(chuàng)建管理者對象

3.2 設置請求參數(shù)

3.3 發(fā)送請求

4.解析數(shù)據(jù)(寫成pilst文件 ?分析數(shù)據(jù))

5.設計模型,字典轉(zhuǎn)模型

6.把模型展示到界面

怎么做?

6.1 在cell里面定義模型屬性來接收模型數(shù)據(jù)

6.2 在cell里面定義要接收數(shù)據(jù)的屬性

6.3 重寫模型屬性的set方法

6.4 給需要接收數(shù)據(jù)的參數(shù)賦值

7.設置完成 ?運行項目,發(fā)現(xiàn)tableView還是沒有數(shù)據(jù)? 為什么

因為tableView只在啟動的時候調(diào)用了一次數(shù)據(jù)源方法,這個時候還沒有數(shù)據(jù) ? ? ? 設置完數(shù)據(jù)沒有調(diào)用數(shù)據(jù)源方法

什么時候會重新調(diào)用數(shù)據(jù)源方法?

1 tableView第一次被加載的時候

2?刷新tableView表格

解決: 加載完數(shù)據(jù)之后(發(fā)送網(wǎng)絡成功),刷新tableView表格 ?就會重新調(diào)用數(shù)據(jù)源方法

[self.tableViewreloadData];

三.cell內(nèi)部結構處理

1.訂閱數(shù)字處理

1.1 為什么要處理訂閱數(shù)字?

訂閱數(shù)非常大的時候,1萬以上,我們希望顯示為:XX萬人訂閱

2.2 在哪里處理?

我們在cell里面賦值的時候可以拿到訂閱數(shù) ?可以在cell內(nèi)部做處理

2.3?怎么處理?

拿到訂閱數(shù)(String類型),轉(zhuǎn)換成CGFloat類型 ? ? ? ?顯示為XX人訂閱

CGFloatnumF = item.sub_number.floatValue;

判斷一下不超過1萬 直接顯示, ? 超過一萬 ? 訂閱數(shù) /1萬 ? 保留一位小數(shù) ? 顯示為XX萬人訂閱

2.4 如果正好是1萬的整數(shù)倍 ? 那么處理后的數(shù)據(jù)為XX.0萬人 ??我們希望 .0 不要顯示 ? ? ?怎么處理?

可以利用字符串替換

// 以后字符串不想要,就替換為空

numStr = [numStrstringByReplacingOccurrencesOfString:@".0"withString:@""];

2.頭像圓角處理

2.1 怎么處理?

有三種處理方式設置圓角半徑 ? 圖片裁剪 ?運行時

2.11 圖片裁剪 ? ?怎么做? ? 在哪里寫代碼?

0.在cell里面賦值的時候可以拿到圖片 ?可以在cell內(nèi)部做處理

1.開啟圖形上下文

// UIGraphicsBeginImageContextWithOptions:繪制圖片不清晰

// scale:比例因子 像素與點比例 0:自動識別

UIGraphicsBeginImageContextWithOptions(image.size,NO,0);

2.設置圓形裁剪區(qū)域

UIBezierPath*path = [UIBezierPathbezierPathWithOvalInRect:CGRectMake(0,0, image.size.width, image.size.height)];

3.超出裁剪區(qū)域剪切掉

[pathaddClip];

4.繪圖

[imagedrawAtPoint:CGPointZero];

5. 獲取圖片

image =UIGraphicsGetImageFromCurrentImageContext();

6.關閉圖形上下文

UIGraphicsEndImageContext();

2.12 設置圓角半徑 ?在哪里寫代碼?

因為cell從xib加載,一定會調(diào)用awakeFromNib

// 當對象從xib加載完成就會調(diào)用

// 只會調(diào)用一次

- (void)awakeFromNib

{

//??? self.iconView.layer.cornerRadius = self.iconView.frame.size.width * 0.5;

//??? // 超出主層邊框,就會裁剪掉

//??? self.iconView.layer.masksToBounds = YES;不設置的話, 看到的圖片還是原來的形狀(正方形)

}

2.13 運行時

在xib里面 ?選中要設置圓角的圖片的imageView

3.分割線處理

3.1 為什么要處理分割線

系統(tǒng)的分割線沒有占據(jù)整個cell ? ?離cell得左邊有一段距離 ? ?我們希望分割線占據(jù)整個cell

3.2 怎么處理?

1.自定義分割線

2.設置系統(tǒng)屬性,讓分割線占據(jù)全屏(iOS6和iOS7,iOS7和iOS8)

首先 ?我們要知道 ? ?分割線屬于tableView的內(nèi)容

在tableView里面搜IOS7 ? 可以查看到IOS7版本新出來的API

我們找到一個內(nèi)邊距 ? 嘗試設置一下

// 取消分割線內(nèi)邊距

self.tableView.separatorInset=UIEdgeInsetsZero;

設置完之后我們發(fā)現(xiàn)分割線確實往左邊移了一點,但還是沒占據(jù)整個cell(ios8或以上的用戶會有這個問題 ? ios7或一下的沒有)

我們知道IOS8之后 ?出了一個layOut的內(nèi)邊距,整個屬性屬于UIView

我們?nèi)IView里面去搜索IOS8新出的API ? 搜索到layoutMargins

// 取消約束邊緣

self.tableView.layoutMargins=UIEdgeInsetsZero;

設置完之后我們發(fā)現(xiàn)沒有效果 ,為什么?

可能是我們設置的對象搞錯了,我們嘗試一下給cell設置一下

cell.layoutMargins=UIEdgeInsetsZero;

設置完之后,我們發(fā)現(xiàn)就可以了 ?問題解決了

layoutMargins是IOS8de內(nèi)容 ?我們項目設置的支持的最低版本為ios7,那么ios7用戶使用ios8的api會報錯

怎么解決?

判斷一下 ? ?ios8以上的就不執(zhí)行這個方法

怎么拿到當前手機版本

#define XTSystemVersion ([UIDevice currentDevice].systemVersion.floatValue)

if(XTSystemVersion>=8.0) {// 8.0以上才需要調(diào)用方法

cell.layoutMargins=UIEdgeInsetsZero;

}

3.setFrame重寫cell的setFrame 1.取消系統(tǒng)分割線 2.設置tableView背景色為分割線顏色

優(yōu)點:不用做屏幕適配 ? 任何地方都能使用

設置cell的分割線,那么應該是設置cell的frame ? 在cell類里面寫代碼

怎么寫?

0 取消系統(tǒng)的分割線

1 先設置tableView的背景顏色 ? ?想讓分割線為什么顏色就設置背景色為什么顏色

2 只需要設置frame的高度比cell的高度小一點就可以了

- (void)setFrame:(CGRect)frame

{讓cell的y值從10 的位置開始顯示

frame.origin.y+=10;

讓cell左右距離父控件左右間距為10

frame.origin.x+=10;

frame.size.width-=20;

設置分割線的高度

frame.size.height-=10;

// 還原系統(tǒng)實現(xiàn)

// 真正設置cell的frame

[supersetFrame:frame];

}

3 ? 如果分割線高度太大 ?,那么cel的內(nèi)容可能顯示不完全, ? 應為cell的高度減小了

怎么解決?

我們只要把cell的高度設置大一點就可以了 ? ?分割線高度設置多少 ?我們就在原來的基礎上給cell的高度再加多少

四.發(fā)送網(wǎng)絡請求,提示正在加載的HUD

1.為什么要使用HUD?

給用戶良好的體驗

2.怎么使用HUD?

用cocoapods導入SVProgressHUD框架

// 提示用戶當前正在加載數(shù)據(jù)

[SVProgressHUDshowWithStatus:@"正在加載數(shù)據(jù)ing...."];

3.什么時候顯示HUD

發(fā)送網(wǎng)絡請求的時候(之前), ?進入推薦標簽界面就發(fā)送網(wǎng)絡請求,所以可以在viewDidLoad方法里面顯示

4.什么時候隱藏

數(shù)據(jù)加載完成或者是用戶退出界面的時候

// 隱藏指示器

[SVProgressHUDdismiss];

5.注意點:

當網(wǎng)絡非常慢的時候,用戶可能不等網(wǎng)絡請求完畢就退出當前界面,這個時候就要隱藏HUD而且關閉網(wǎng)絡請求

那么,我們應該把代碼寫在哪里??

界面消失的時候回調(diào)用下面的方法,我們可以把代碼寫在這里面

- (void)viewWillDisappear:(BOOL)animated

{

[superviewWillDisappear:animated];

// 隱藏指示器

[SVProgressHUDdismiss];

// 干掉請求

// 讓管理者中所有任務全部執(zhí)行cancel

[_mgr.tasksmakeObjectsPerformSelector:@selector(cancel)];

}

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市杉辙,隨后出現(xiàn)的幾起案子溯捆,更是在濱河造成了極大的恐慌光酣,老刑警劉巖勾缭,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件洽议,死亡現(xiàn)場離奇詭異,居然都是意外死亡漫拭,警方通過查閱死者的電腦和手機亚兄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來采驻,“玉大人审胚,你說我怎么就攤上這事±衤茫” “怎么了膳叨?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長痘系。 經(jīng)常有香客問我菲嘴,道長,這世上最難降的妖魔是什么汰翠? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任龄坪,我火速辦了婚禮,結果婚禮上复唤,老公的妹妹穿的比我還像新娘健田。我一直安慰自己,他們只是感情好佛纫,可當我...
    茶點故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布妓局。 她就那樣靜靜地躺著,像睡著了一般呈宇。 火紅的嫁衣襯著肌膚如雪好爬。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天甥啄,我揣著相機與錄音存炮,去河邊找鬼。 笑死型豁,一個胖子當著我的面吹牛僵蛛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播迎变,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼充尉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了衣形?” 一聲冷哼從身側(cè)響起驼侠,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤姿鸿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后倒源,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體苛预,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年笋熬,在試婚紗的時候發(fā)現(xiàn)自己被綠了热某。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡胳螟,死狀恐怖昔馋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情糖耸,我是刑警寧澤秘遏,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站嘉竟,受9級特大地震影響邦危,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜舍扰,卻給世界環(huán)境...
    茶點故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一倦蚪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧妥粟,春花似錦审丘、人聲如沸吏够。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽锅知。三九已至播急,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間售睹,已是汗流浹背桩警。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留昌妹,地道東北人捶枢。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像飞崖,于是被迫代替她去往敵國和親烂叔。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,870評論 2 361

推薦閱讀更多精彩內(nèi)容