iOS-优化

2019-02-23  本文已影响0人  李永开

一.画面卡顿优化

知识铺垫:
  • cpu执行的阶段
    1.Layout阶段:UI布局、文本计算
    2.Display阶段:绘制,例如drawRect()方法
    3.Prepare:图片编解码得到位图
    4.Commit:CoreAnimation对位图进行提交
  • GPU渲染管线也叫openGL渲染管线
    1.顶点作色对位图进行处理
    2.图元装配
    3.光栅化
    4.片段着色
    5.片段处理
    6.提交到buffer frame
  • 视频控制器
    1.定时产生VSync信号.
    2.从buffer frame 里面拿到帧数据
    3.显示器显示

二.文本的异步绘制优化

知识铺垫:

1.当我们调用UIView setNeedsDisplay方法的时候
2.系统会调用View.layer setNeedsDisplay方法
3.在当前runloop快要结束的时候,调用CALayer display方法
4.判断[layer.delegate responds To @selector(displayLayer:)]方法
5.1.如果返回NO,进入系统绘制流程
5.2.如果返回YES,进入异步绘制入口

  • 系统绘制流程
    1.创建context
    2.判断layer是否有delegate
    3.1.如果没有,调用CALayer drawInContext
    3.2如果有,调用[layer.delegate drawLayer:inContext:] ,调用[UIView drawRect:]
    4.上传context上下文到GPU
  • 异步绘制流程
    1.判断layer.delegate是否响应displayLayer
    2.如果响应,自己绘制bitmap,然后layer.contents = bitmap.

异步绘制详解
1.[YKView setNeedsDisplay]
2.[CAlayer display]
3.因为layer有delegate,所以会由layer的delegate代替系统去绘制位图
4.切换到子线程,进行位图绘制
5.回到主线程,layer.contents = bitmap.

三.性能优化

cpu优化

视图优化

电量优化

网络优化

启动优化

安装包优化

性能优化

上一篇下一篇

猜你喜欢

热点阅读