zoukankan      html  css  js  c++  java
  • UITableView 性能优化(卡问题自检)

    UITableView 性能优化(卡问题自检)

    1.使用不透明视图。

        不透明的视图可以极大地提高渲染的速度。因此如非必要,可以将table cell及其子视图的opaque属性设为YES(默认值);

        其中的特例包括背景色,它的alpha值应该为1(例如不要使用clearColor);

        图像的alpha值也应该为1,或者在画图时设为不透明。

    2.减少视图的数目。

        view是很大的对象,创建它会消耗较多资源,并且也影响渲染的性能。

        最佳的解决办法还是继承UITableViewCell,并在其drawRect:中自行绘制:

        - (void)drawRect:(CGRect)rect

        {   

                   if (image)

             {

                  [image drawAtPoint:imagePoint];

                  self.image = nil;

             }

             else

             {

                  [placeHolder drawAtPoint:imagePoint];

             }

             [text drawInRect: textRect withFont: font lineBreakMode: UILineBreakModeTailTruncation];

        }

           

    此外还可以创建CALayer,将内容绘制到layer上,然后对cell的contentView.layer调用addSublayer:方法。这个例子中,layer并不会显著影响性能,但如果layer透明,或者有圆角、变形等效果,就会影响到绘制速度了。解决办法可参见后面的预渲染图像。

           

    3.不要做多余的绘制工作。

    在实现drawRect:的时候,它的rect参数就是需要绘制的区域,这个区域之外的不需要进行绘制。

    4.预渲染图像。

        你会发现即使做到了上述几点,当新的图像出现时,仍然会有短暂的停顿现象。解决的办法就是在bitmap context里先将其画一遍,导出成UIImage对象,然后再绘制到屏幕,详细做法可见《利用预渲染加速iOS设备的图像显示》。

    5.不要阻塞主线程。

        另外,自动载入更新数据对用户来说也很友好,这减少了用户等待下载的时间。例如每次载入50条信息,那就可以在滚动到倒数第10条以内时,加载更多信息:

    - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath

    {

        if (count - indexPath.row < 10 && !updating)

        {

             updating = YES;

             [self update];

        }

    }// update方法获取到结果后,设置updating为NO

    6,数据获取后过多的计算也很影响性能。

  • 相关阅读:
    洛谷P2569 (BZOJ1855)[SCOI2010]股票交易 【单调队列优化DP】
    洛谷 P2254 [NOI2005]瑰丽华尔兹(单调栈优化DP)
    CF372C Watching Fireworks is Fun(单调队列优化DP)
    2019牛客全国多校第八场A题 All-one Matrices(单调栈)
    HDU3896 Greatest TC(双联通分量+倍增)
    2019牛客多校第7场
    ZOJ 2112 Dynamic Rankings(树状数组+主席树)
    2019 杭电多校第六场 题解
    HDU2242 考研路茫茫——空调教室 (双联通分+树形DP)
    HDU5536 Chip Factory
  • 原文地址:https://www.cnblogs.com/417460188dy/p/3220902.html
Copyright © 2011-2022 走看看