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高阶开发笔记

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


相关文章
|
SQL 存储 数据可视化
Ganos矢量快显功能上手系列2:增强的MVT能力
本文主要介绍Ganos新增的2D矢量动态切片函数及其使用方法。新增的矢量动态切片函数能够大幅提升可视化效率,有效解决小比例尺MVT显示耗时久的问题。和PostGIS相比,小比例尺MVT的可视化效率提升可达60%以上。
|
4月前
|
移动开发 监控 前端开发
构建高效Android应用:从优化布局到提升性能
【7月更文挑战第60天】在移动开发领域,一个流畅且响应迅速的应用程序是用户留存的关键。针对Android平台,开发者面临的挑战包括多样化的设备兼容性和性能优化。本文将深入探讨如何通过改进布局设计、内存管理和多线程处理来构建高效的Android应用。我们将剖析布局优化的细节,并讨论最新的Android性能提升策略,以帮助开发者创建更快速、更流畅的用户体验。
71 10
|
5月前
|
图形学 开发者
U3D开发进阶:精细调整Collider与优化碰撞检测性能
【7月更文第11天】在Unity 3D(简称U3D)开发过程中,精确控制Collider(碰撞器)的设置与合理利用Layer Collision Matrix(层级碰撞矩阵)对于提升游戏性能、优化物理模拟至关重要。本文将深入探讨这两项技术的应用,通过实际案例和代码示例,帮助开发者构建更加高效、流畅的游戏体验。
626 2
|
5月前
|
存储 SQL 运维
MSSQL性能调优精要:索引深度优化、查询高效重构与并发精细控制
在MSSQL数据库的运维与优化领域,性能调优是一项复杂而细致的工作,直接关系到数据库的稳定性和响应速度
|
7月前
|
存储 SQL 缓存
构建高效的矢量数据库查询:查询语言与优化策略
【4月更文挑战第30天】本文探讨了构建高效矢量数据库查询的关键点,包括设计简洁、表达性强的查询语言,支持空间操作、函数及索引。查询优化策略涉及查询重写、索引优化、并行处理和缓存机制,以提升查询效率和准确性。这些方法对处理高维空间数据的应用至关重要,随着技术进步,矢量数据库查询系统将在更多领域得到应用。
|
存储 编译器 C语言
性能优化特性之:LTO
本文介绍了倚天实例上的编译优化特性:LTO,并从优化原理、使用方法进行了详细阐述。
|
编译器 C++ Anolis
性能优化特性之:PGO
本文介绍了倚天实例上的编译优化特性:PGO,并从优化原理、使用方法进行了详细阐述。
|
前端开发
一次性能优化思考过程
最近业务上空闲了下来,也是把之前在开发时自身感受比较大的白屏时间放在了主线上去排查优化,这里记录一下笔者对于移动端vConsole脚本的引入问题全过程。
171 0
一次性能优化思考过程
|
存储 缓存 编解码
「性能优化系列」不使用第三方库,Bitmap的优化策略
在Android3.0到Android7.0,Bitmap对象和像素都是放置到Java堆中,这个时候即使不调用recycle,Bitmap内存也会随着对象一起被回收。虽然Bitmap内存可以很容易被回收,但是Java堆的内存有很大的限制,也很容易造成GC。 在Android8.0的时候,Bitmap内存又重新放置到了Native中。 Bitmap造成OOM很多时候也是因为对Bitmap的资源没有得到很好的利用,同时没有做到及时的释放。
381 0
|
前端开发 JavaScript API
渲染性能优化的全局视角,教你做的比别人好
遇到性能优化的问题,大抵都会从两个方向入手:行业标准优化手段、实际性能瓶颈问题。既能够从先进的模式、方法、套路吸收借鉴,又能够结合实际性能情况设计应对方案,已然是高质量工作的路径了,但是,路上还充斥着各种判断和选择,稍有不慎还是会泥足深陷,走上“要你命 3000 ”的道路。
渲染性能优化的全局视角,教你做的比别人好

热门文章

最新文章