UITableview优化方案

1.缓存行高
    tableview在执行reloadData时,首先所有行先刷新一次行高,然后再创建一屏的cell,滚动视图时,新出现的行调用行高方法,刷新当前行。所以,如果把计算行高这种耗时操作放在cell滚动中,会引起卡顿,我们最好事先计算后cell的高度,避免滑动cell时重复计算。

2.不要动态创建子View
    cell中的子view都预先在初始化方法里创建,对于仅个别cell需要显示的view,我们可以对view的 hidden进行处理,而不是执行add、remove操作。这样可以减少,在cell上创建、或从缓存池中取子控件或布局控件的耗时操作。

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设置将不起作用,那图层透不透明只取决于图片和背景色,如果叠加结果是不透明,那么图层不透明,将不会触发blend操作;如果叠加结果是透明的,那么会触发blend操作。
     我们好控制的图层的背景色尽量避免使用alpha操作。

6.cell栅格化
    栅格化是指将矢量图转换成位图的过程。
    针对于内容比较固定的cell,建议采用栅格化,让Core animation帮我们完成图层的混合,生成一个静态图,优化帧率。

7.异步绘制
    尽量不要在cell中使用圆角操作,如果使用可以让美工切圆角图,即使非要绘制也需要异步绘制。

以下是我们工程中的一个界面处理:

实例截图

针对字体商城提出两点优化点:

1.透明层效果

2.圆角

针对优化点给出方案:

1.图片的透明层效果,此处没给合适的切图,当然给完整的透明图最好,此处我们在不影响性能的情况下实现该效果,将透明图与图片合并,避免出现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;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,122评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,070评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,491评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,636评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,676评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,541评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,292评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,211评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,655评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,846评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,965评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,684评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,295评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,894评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,012评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,126评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,914评论 2 355