cell里的image使用SDWebimage,高清大圖用YYWebimage來下載緩存圖片
cell內(nèi)部控件的層次結(jié)構(gòu)盡量的少,使用drawRect畫,但是有一個問題,點(diǎn)擊事件沒辦法處理
cell內(nèi)部所有顯示的數(shù)據(jù)提前準(zhǔn)備好或衡,盡量少的實(shí)時(shí)計(jì)算,不要在cell顯示的時(shí)候才去計(jì)算,先計(jì)算好,在刷新界面.
盡量少的使用富文本
時(shí)間格式化對象使用同一個
列表內(nèi)部的子控件都要少量的計(jì)算,所有控件大小,位置提前計(jì)算好,存起來,不要每次去計(jì)算,少的使用約束,因?yàn)榧s束是系統(tǒng)會去計(jì)算.
緩存行高,因?yàn)椋豪米詣硬季钟?jì)算行高很消耗cpu杖们,每次滾動到該cell都要計(jì)算,"self.contentView.layoutIfNeeded",cell將要顯示出來的時(shí)候,行高先確定,緩存起來self.contentView.layoutifNeeded這個方法就是布局contview里的控件大小,(定義一個屬性來記對應(yīng)cell的行高),注意:要移除contentView的底部約束
利用cpu異步繪制cell的layer ? ?"layer.drawsAsynchronously"
柵格化,將cell內(nèi)容渲染成一張圖片,在滾動的時(shí)候就是一張圖片layer.shouldRasterize,layer.rasterizationScale
因?yàn)槿绻蠈涌丶胪该鞯脑捓友到y(tǒng)會努力的繪制下層控件的內(nèi)容與上層控件的內(nèi)容根悼,并且將兩個內(nèi)容按照透明度去進(jìn)行繪制
在cell中不要用layer去畫圓角,服務(wù)器返回圖片就是圓角的,CALayer的cornerRadius是一個超級費(fèi)性能的東西,它會在每一幀都裁剪圓角,比如在tableview每個cell里都有一個裁剪屬性,無論你有沒有滾動視圖都會運(yùn)算裁剪圓角折晦,很費(fèi)CPU性能士败!
cell的按需加載 具體參考:?http://www.reibang.com/p/5ca924b89e8b