我作为面试官必问的。怎么使之流畅,fps接近60帧。
第一,对象创建,对象销毁,对象调整。
对象创建会消耗内存,cpu等。所以纯代码优势于xib以及sb。
可以对象创建懒加载,这就是懒汉模式,需要时候创建,不需要不创建,不频繁创建。也是我必问的。
能缓存到缓存池的就放到缓存池。比如cell重用,就是一个缓存池,对数据的缓存,对cell高度的缓存。
第二,文本的计算绘制于渲染。
我在从后台html转成移动端原生东西就遇到这样情况。把html转换属性字符串转换放到后台,并且缓存起来。
把常用控件属性字符串展示都是在主线程,所以尽量放到后台异步绘制用textkit以及coretext,很多第三方这方面库都是这样,不然cpu使用率会百分之九十九,哈哈是不是醉了。
第三,图像方面。UIImage的几个方法不能马上解码,一般给到uiimageview等控件时候才会解码,这是在主线程做的,所以要后台异步绘制到CGBitmapContext 中,然后从 Bitmap 直接创建图片。
第四,视图方面层次较多,以及透明圆角阴影遮照影响性能等。可以后台异步绘制成一张图片来解决,可以参考VVebo微博的思路,他的思路效果很不错,很是流畅。 这里是例子,VVeboTableViewDemo,当时运行跑了下,好流畅。
第五,预排版对视图的frame bounds 等调整也比一般属性消耗资源多,所以尽量确定了,就不要频繁变化。所以尽量后台提前计算好布局,一次性调整好布局。
网友评论