新浪微博的cell開(kāi)發(fā)思路

1. 遇到加載網(wǎng)絡(luò)圖片的時(shí)候,內(nèi)存吃緊的開(kāi)發(fā)思路,釋放內(nèi)存,停止下載圖片。

開(kāi)發(fā)代碼:

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application

{

SDWebImageManager *mgr = [SDWebImageManager sharedManager];

// 1.取消下載

[mgr cancelAll];

// 2.清除內(nèi)存中的所有圖片

[mgr.imageCache clearMemory];

}

2. -(void)layoutSubviews;方法是自己的尺寸被修改的時(shí)候,自己會(huì)繼續(xù)調(diào)用,所以方法里不能再次修改自己的尺寸,會(huì)造成死循環(huán)。

3. 目的:想在系統(tǒng)計(jì)算和設(shè)置完按鈕的尺寸后,再修改一下尺寸,可以重寫frame方法

- (void)setFrame:(CGRect)frame {

? ? frame.size.width += 10;

? ? [super setFrame:frame];

}

攔截所有的frame的設(shè)置,優(yōu)先級(jí)是最高的。

4. titleView是一個(gè)特殊的控件,會(huì)把自己兩邊的范圍也當(dāng)作自己的范圍,系統(tǒng)設(shè)置的,子控件超出父控件的范圍的時(shí)候,是不能點(diǎn)擊的。

5. cell類型:原創(chuàng)微博文字和6張圖片,文字和9張圖片,轉(zhuǎn)發(fā),只有文字,轉(zhuǎn)發(fā)也是只有文字。

6. 微博轉(zhuǎn)發(fā)別人的圖片以后,就不能再發(fā)圖片了,只能發(fā)文字。

7. 開(kāi)發(fā)思路:

? ? 1)首先將cell能夠出現(xiàn)的所有的情況,都整理出來(lái)。

? ? 2)需要用的控件全部加載出來(lái),控制他的顯示和隱藏。

? ? 3)不論是否轉(zhuǎn)發(fā)微博,都有頭像,名稱,時(shí)間,來(lái)源,文字,五個(gè)元素,微博必須有文字。

? ? 4)UIView是輕量級(jí)的,UIButton,UITableView,...是重量級(jí)的。

8. 新浪微博cell開(kāi)發(fā)分三大塊:原創(chuàng)微博一個(gè)view上,轉(zhuǎn)發(fā)微博一個(gè)view上,工具條一個(gè)view上。

9. 新浪微博的四種cell: 1. 原創(chuàng)微博只有文字和工具條,2.原創(chuàng)微博有文字也有圖片和工具條,3.轉(zhuǎn)發(fā)微博只有文字和工具條,4.轉(zhuǎn)發(fā)微博有文字也有圖片和工具條。

10. 自定義cell的步驟(每個(gè)cell的高度不一樣,每個(gè)cell里面顯示的內(nèi)容也不一樣)

1)新建一個(gè)繼承自UITableViewCell的子類

2)在initWithStyle:方法中進(jìn)行子控件的初始化

1>將有可能顯示的所有子控件都添加到contentView中

2>順便設(shè)置子控件的一些屬性(一次性的設(shè)置:字體、文字顏色、背景)

3.提供2個(gè)模型

1 >一個(gè)是數(shù)據(jù)模型(文字?jǐn)?shù)據(jù)+圖片數(shù)據(jù))

2>一個(gè)是frame模型(數(shù)據(jù)模型+所有子控件的frame+cell的高度)

4.cell應(yīng)該提供一個(gè)frame模型屬性

1>將frame模型傳遞給cell

2>cell根據(jù)frame模型給子控件設(shè)置frame,根據(jù)數(shù)據(jù)模型給子控件設(shè)置數(shù)據(jù)

3>cell根據(jù)數(shù)據(jù)模型決定顯示和隱藏哪些子控件

5.在tableView的代理方法返回cell的高度

11. 自定義cell建議手寫代碼,xib局限很大。

12. 安卓開(kāi)發(fā)工具支持局部替換。

13. 模型傳給view,view將模型拆開(kāi),顯示和處理。

14. 一個(gè)YUStatusFrame模型里面包含的信息:

1)存放著一個(gè)cell內(nèi)部所有子控件的frame數(shù)據(jù)。

2)存放著一個(gè)cell的高度。

3)存放著一個(gè)數(shù)據(jù)模型(根據(jù)數(shù)據(jù)模型計(jì)算尺寸和高度)。

15. 自定義的cell中的YUStatusFrame模型聲明屬性的時(shí)候,不能寫成frame屬性名,這樣會(huì)覆蓋掉系統(tǒng)的frame屬性,最后就不能設(shè)置位置和尺寸了。

16. 左上角開(kāi)始計(jì)算。

17.?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容