性能优化+界面优化

2021-06-16  本文已影响0人  冰山_X

性能优化

选择正确的collection

尽量保持UIImageView和图片大小一致

重用和延迟加载

缓存

界面优化

避免图层混合

UILabel图层混合解决方法

图层混合的检测

UITableView优化

CPU

  1. 尽量使用轻量级的对象,CALayer代替UIView,Int代替NSNumber
  1. 尽量减少调整UIView的属性,尽量减少不必要的修改,frame,bounds,transform
  1. 尽量提前计算好布局,在需要的时候一次性调整好布局,不要多次修改属性
  1. Autolayout比直接设置frame消耗更多的CPU资源
  1. 图片的size尽量跟UIImageview的size大小一致
  1. 控制线程的最大并发数
  2. 把耗时操作放在子线程处理

文本处理(尺寸计算/绘制)
图片处理(解码/绘制)

GPU

  1. 尽量避免短时间内大量图片的显示,尽可能将多张图片合并成一张显示
  2. GPU处理的最大纹理尺寸为4096*4096,超出部分就会占用CPU资源进行处理,所以纹理不要超过这个尺寸
  3. 尽量减少试图层次跟数量
  4. 减少透明试图,不透明的就设置opaque为YES
  5. 尽量避免出现离屏渲染

原因:
1 创建缓冲区
2 切换上下文

触发
1 光栅化 layer.shouleRasterize = YES
2 遮罩 layer.mask

3 圆角 同时设置layer.masksToBounds = YES和layer.cornerRadius>0
考虑使用CoreGraphics绘制裁剪圆角,或者直接提供圆角图片
4 阴影,layer.shadowXXX
如果设置了layer.shadowPath就不会产生离屏渲染

耗电优化

  1. 避免频繁使用
  2. 大量数据使用dispatch_IO 异步操作
  3. 数据量大使用数据库
  1. 减少/压缩网络数据
  2. 请求结果相同,缓存
  3. 断点续传
  4. 无网络,不要请求
  5. 可取消长时间请求,设置超时时间
  6. 批量传输,减少请求次数
  1. 快速获取位置,使用requestLocation
  2. 如果不是导航应用,尽量不要实时更新位置,定位完毕就关闭服务
  3. 尽量降低精准度
  4. 需要后台定位时,设置可暂定位置更新
上一篇下一篇

猜你喜欢

热点阅读