一朦乏、原因:
1、cell中需要加載圖片及設(shè)置成圓角(layer.masksToBounds=YES)產(chǎn)生離屏渲染氧骤;
2呻疹、cell的重新布局;
3筹陵、cell的高度不確定刽锤;
4、cell中的控件的數(shù)量朦佩;
5并思、全局更新TableView;
6、使用了clearcolor语稠,無(wú)背景色宋彼,透明度為0;
7、使用addView給cell動(dòng)態(tài)的添加View;
8仙畦、實(shí)現(xiàn)了無(wú)用的代理方法输涕;
9、做了多余的繪制工作慨畸;
10莱坎、沒(méi)有預(yù)渲染圖像。
二先口、解決方案:
1型奥、加載網(wǎng)絡(luò)圖片使用異步加載,并緩存碉京;盡量不要設(shè)置圓角厢汹,采用帶圓角的圖片;
2谐宙、cell的布局填充操作比較耗時(shí)烫葬,一般創(chuàng)建好久布局好;
3凡蜻、提前計(jì)算cell的高度并緩存cell的屬性搭综;
4、盡量使cell的布局大致相同划栓,不同風(fēng)格的cell采用不同的重用標(biāo)識(shí)符兑巾,初始化添加控件,不適用的先隱藏忠荞;
5蒋歌、可以采用局部更新cell的內(nèi)容帅掘;
6、因?yàn)殇秩竞臅r(shí)較長(zhǎng)堂油,盡量使用顏色設(shè)置修档;
7、自定義cell府框,預(yù)先布局好cell的子視圖吱窝;
8、實(shí)現(xiàn)一些必要用到的代理方法迫靖;
9院峡、在實(shí)現(xiàn)drawRect:的時(shí)候,它的rect參數(shù)就是需要繪制的區(qū)域袜香,這個(gè)區(qū)域之外的不需要進(jìn)行繪制撕予。例如可以用CGRectIntersectsRect鲫惶、CGRectIntersection或CGRectContainsRect判斷是否需要繪制image和text蜈首,然后再調(diào)用繪制方法。
10欠母、在bitmap context里先將其畫(huà)一遍欢策,導(dǎo)出成UIImage對(duì)象,然后再繪制到屏幕赏淌。