UITableview優(yōu)化方案

1.緩存行高
????tableview在執(zhí)行reloadData時磅网,首先所有行先刷新一次行高,然后再創(chuàng)建一屏的cell竹捉,滾動視圖時芜辕,新出現(xiàn)的行調(diào)用行高方法,刷新當前行块差。所以侵续,如果把計算行高這種耗時操作放在cell滾動中倔丈,會引起卡頓,我們最好事先計算后cell的高度状蜗,避免滑動cell時重復計算需五。

2.不要動態(tài)創(chuàng)建子View
????cell中的子view都預先在初始化方法里創(chuàng)建,對于僅個別cell需要顯示的view轧坎,我們可以對view的 hidden進行處理宏邮,而不是執(zhí)行add、remove操作眶根。這樣可以減少蜀铲,在cell上創(chuàng)建、或從緩存池中取子控件或布局控件的耗時操作属百。

3.所有的子視圖添加到contentView上
????這個是個習慣记劝,可以為cell的側滑編輯操作做好鋪墊。

4.所有的子視圖都有指定背景顏色
????如果cell上的控件未指定背景顏色族扰,會影響tableview滑動的流暢度厌丑,直接看第5條。

5.所有的子視圖盡量不要使用alpha
????減少圖層的blend操作渔呵,展示透明的view怒竿,設備會把當前view與背景圖進行alpha疊加,如果動畫中每一幀都需要這么操作扩氢,性能的消耗很嚴重耕驰。
????對于滑動的視圖,我們盡量不要使用clearColor录豺,使用與superView相同的色值來達到相同效果朦肘。
????圖片控件避免使用透明的圖片,即使使用了透明的圖片双饥,我們最好將透明圖片與背景色合成不透明圖片媒抠,也要避免做重復合成操作。
????UIImageView使用時避免透明:圖片非透明咏花;opaque的值(默認YES)趴生;view的alpha值;view的背景色昏翰。
????當opaque為YES時苍匆,那么view的alpha設置將不起作用,那圖層透不透明只取決于圖片和背景色棚菊,如果疊加結果是不透明浸踩,那么圖層不透明,將不會觸發(fā)blend操作窍株;如果疊加結果是透明的民轴,那么會觸發(fā)blend操作攻柠。
???? 我們好控制的圖層的背景色盡量避免使用alpha操作。

6.cell柵格化
????柵格化是指將矢量圖轉換成位圖的過程后裸。
????針對于內(nèi)容比較固定的cell瑰钮,建議采用柵格化,讓Core animation幫我們完成圖層的混合微驶,生成一個靜態(tài)圖浪谴,優(yōu)化幀率。

7.異步繪制
????盡量不要在cell中使用圓角操作因苹,如果使用可以讓美工切圓角圖苟耻,即使非要繪制也需要異步繪制。

以下是我們工程中的一個界面處理:

實例截圖

針對字體商城提出兩點優(yōu)化點:

1.透明層效果

2.圓角

針對優(yōu)化點給出方案:

1.圖片的透明層效果扶檐,此處沒給合適的切圖凶杖,當然給完整的透明圖最好,此處我們在不影響性能的情況下實現(xiàn)該效果款筑,將透明圖與圖片合并智蝠,避免出現(xiàn)blend操作。

2.圓角效果采用異步繪制方式
????當真正在工程中操作時奈梳,我們把透明層做了先做了圓角處理杈湾,然后與原圖疊加再進行截圖,這樣操作步驟2可以避免攘须,其實步驟2的代碼也已給出漆撞,以下是操作代碼:

cell中圓角處理代碼:

- (void)generateAlphaBgImage{
    alphaBgImageArray = [[NSMutableArray alloc]init];
    for (int i = 0; i < 10; i++) {
        NSString *imageStr = [NSString stringWithFormat:@"fontStoreBackground%d", i];
        UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(15.0f, 5.0f, WIDTH_OF_SCREEN - 30.0f, rowHeight - 10.0f)];
        imageView.image = [UIImage imageNamed:imageStr];
        
        UIView *alphaView = [[UIView alloc]initWithFrame:imageView.bounds];
        alphaView.backgroundColor = [UIColor colorWithRed:0.0f green:0.0f blue:0.0f alpha:0.3f];
        alphaView.layer.masksToBounds = YES;
        alphaView.layer.cornerRadius = 8.0f;
        [imageView addSubview:alphaView];
        
        UIImage *image = [CommUtls changeViewToImage:imageView compress:[UIScreen mainScreen].scale];
        [alphaBgImageArray addObject:image];
    }
}
+ (UIImage *)changeViewToImage:(UIView *)currentView compress:(CGFloat)compress
{
    UIGraphicsBeginImageContextWithOptions(currentView.bounds.size, NO, compress);
    [currentView.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    
    if (compress < 1)
    {
        viewImage = [self imageWithImage:viewImage scaledToSize:CGSizeMake(viewImage.size.width * compress, viewImage.size.height * compress)];
    }
    return viewImage;
}
+(UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize
{
    // Create a graphics image context
    UIGraphicsBeginImageContext(newSize);
    
    // Tell the old image to draw in this new context, with the desired
    // new size
    [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
    
    // Get the new image from the context
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
    
    // End the context
    UIGraphicsEndImageContext();
    
    // Return the new image.
    return newImage;
}
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市于宙,隨后出現(xiàn)的幾起案子浮驳,更是在濱河造成了極大的恐慌,老刑警劉巖限煞,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抹恳,死亡現(xiàn)場離奇詭異员凝,居然都是意外死亡署驻,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進店門健霹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來旺上,“玉大人,你說我怎么就攤上這事糖埋⌒ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵瞳别,是天一觀的道長征候。 經(jīng)常有香客問我杭攻,道長,這世上最難降的妖魔是什么疤坝? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任兆解,我火速辦了婚禮,結果婚禮上跑揉,老公的妹妹穿的比我還像新娘锅睛。我一直安慰自己,他們只是感情好历谍,可當我...
    茶點故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布现拒。 她就那樣靜靜地躺著,像睡著了一般望侈。 火紅的嫁衣襯著肌膚如雪印蔬。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天脱衙,我揣著相機與錄音扛点,去河邊找鬼。 笑死岂丘,一個胖子當著我的面吹牛陵究,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播奥帘,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼铜邮,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了寨蹋?” 一聲冷哼從身側響起松蒜,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎已旧,沒想到半個月后秸苗,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡运褪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年惊楼,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秸讹。...
    茶點故事閱讀 38,673評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡檀咙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出璃诀,到底是詐尸還是另有隱情弧可,我是刑警寧澤,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布劣欢,位于F島的核電站棕诵,受9級特大地震影響裁良,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜校套,卻給世界環(huán)境...
    茶點故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一趴久、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧搔确,春花似錦彼棍、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至涕蜂,卻和暖如春华匾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背机隙。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工蜘拉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人有鹿。 一個月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓旭旭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親葱跋。 傳聞我的和親對象是個殘疾皇子持寄,可洞房花燭夜當晚...
    茶點故事閱讀 43,562評論 2 349