UITablew性能优化之栅格化

简介: UITablew性能优化之栅格化

在oc中提起性能优化,莫过于UITabliew.

在表格优化中性能优化有以下几点需要注意.

1.不能在cell的代理方法中动态创建子视图

2.cell中的图片要异步加载.

3.关于图片设置圆角,其实一直以来都有很大的争论.说到设置圆角究竟会不会导致性能优化呢?可是所谓的性能好右是什么呢?

那么就拿真机测试一番,因为真机CPU架构和模拟器的架构完全一样

在两帧之间,运算没有做完,就会造成卡顿,这个就是跳帧

刷新帧率(50-60)为优良

那么问题来了什么是一帧呢?

手机屏幕要想看到优良的画面从左到右,从上到下 都一个一个点画 这个就是完整的一帧图片

由于人体眼睛的特殊构造,视觉16帧会让人觉得是在动,24帧才会有优良的视觉体验.

为什么有些app会卡顿?会花?

因为摄像机的帧率是24帧.而电脑手机拥有良好的用户体验起码要50帧+

以及为什么有时候看电影车轮会倒着转?

因为倒时差,在车轮 的转速在某一个转速的时候跟摄像机的帧率吻合,给大闹皮层一种刺激)就会造成一种视觉差假象,看起来就像是倒着转.

说到这点,就不能不说栅格化

是一种美工(设计)的数语将cell中的所有内容,生成一张独立的图形

在屏幕滚动的时候,只显示图像

使用栅格化

Self.layer.shouldRasterize = yes

//栅格化必须要制定分辨率

Self.layer.resterizationScale =

[UIScreen mainScreen].scale

// 2.异步绘制 如果cell比较复杂,可以使用

Self.layer.drawAsynchronously = YES

如果要提高表格的性能,最关键的就是要减少计算量,就能保证每一帧都完成计算,从而达到流畅的效果,说白了也就是减少计算量

跳帧

就是在两帧之间运算还没有做完,就滚动到下一张图片去了,从而造成失帧

就会造成卡顿的感觉,用户的体验非常不好

好了,概念阐述清楚了,回到问题本身,如何优化?

1.行高一定要缓存.

2.不要动态创建子视图

所有的子视图都要预先创建好,不需要可以设置为hidden,或者高度为零

如果要说hidden和高度为零,那个性能更高,这个经过我测试在10000次测验几乎性能差距微微

3.所有的子视图都应该要加到contenView上

4.所有的子视图view都必须要指定背景颜色

为什么要指定背景颜色呢?因为没有指定颜色,让系统渲染的话,会大量消耗cpu的性能

5.所有的颜色都不要使用alpha (透明度)

什么不要使用透明度呢?还是因为图层渲染的问题.想象一下如果设置alpha透明度,系统就会为所有的图层一起渲染来渲染成透明度,这个需要cpu大量的计算,是非常耗性能的

6.cell栅格化

Layer.shouldRasterize =  true

Layer.rasterizationScale  =  UIScrren.mainreen().scale

7.异步绘制

Layer.drawsAsynchronously = true

8.尽量不要给图片设置圆角.如果非要绘制,那么久异步绘制.

其实最好是叫美工给一张原型图片

参考内容为:唐巧iOS高阶开发笔记

以上纯手码,如果你有更好的办法,请告诉我.如果那里有错,请告诉我!马上改.


目录
打赏
0
0
0
0
367
分享
相关文章
Go数组、多维数组和切片(动态数组),及常用函数len(),cap(),copy(),append()在切片中的使用
本文介绍了Go语言中数组、多维数组和切片(动态数组)的基本概念和操作,包括数组的定义、初始化、访问,多维数组的定义和访问,以及切片的创建、使用和扩容。同时,还讲解了切片中常用的函数len()、cap()、copy()和append()的使用方法。
【AI Agent系列】【MetaGPT】7. 实战:只用两个字,让MetaGPT写一篇小说
【AI Agent系列】【MetaGPT】7. 实战:只用两个字,让MetaGPT写一篇小说
542 0
GoFly快速开发框架集成ZincSearch全文搜索引擎 - Elasticsearch轻量级替代为ZincSearch全文搜索引擎
本文介绍了在项目开发中使用ZincSearch作为全文搜索引擎的优势,包括其轻量级、易于安装和使用、资源占用低等特点,以及如何在GoFly快速开发框架中集成和使用ZincSearch,提供了详细的开发文档和实例代码,帮助开发者高效地实现搜索功能。
486 0
7个流行的强化学习算法及代码实现
目前流行的强化学习算法包括 Q-learning、SARSA、DDPG、A2C、PPO、DQN 和 TRPO。 这些算法已被用于在游戏、机器人和决策制定等各种应用中,并且这些流行的算法还在不断发展和改进,本文我们将对其做一个简单的介绍。
1072 0
7个流行的强化学习算法及代码实现
大米CMS基于GET型注入防御脚本的绕过
大米CMS基于GET型注入防御脚本的绕过
335 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问