@iwanglong
2019-02-22T06:15:18.000000Z
字数 540
阅读 263
UI视图
iOS
UITableView相关
事件传递&视图响应
- UIView 提供显示内容,以及处理触摸事件,响应事件
- CALayer 显示 contents 内容
- 单一职责原则设计原则
hitTest:withEvent pointInside:withEvent:
图像显示原理
- CPU
- Layout
- Display
- Prepare
- Commit
- GPU
卡顿&掉帧
- 60FPS -> VSync(16.7ms) -> GPU|CPU
- 在两针之间未做完CPU、GPU操作就会导致卡顿、掉帧
- 滑动优化方案:
- CPU
- 对象创建、调整、销毁放入子线程
- 预排版(布局计算、文本计算)
- 预渲染(异步绘制&图片解码)
- GPU
绘制原理&异步绘制
[UIView setNeedsDisplya] -> [view setNeedsDisplya] -> [CALayer display]
- 当前RunLoop结束的时候才会[CALayer display]
*
离屏渲染
- 起源于GPU,当前屏幕缓冲区开辟新的区域
- 何时触发
- 圆角(当和maskToBounds一起使用时)
- 图层蒙版
- 阴影
- 光栅化
- 为何避免?
- 创建新的渲染缓冲区,会增加GPU工作量可能导致CPU+GPU耗时超过16.7ms
- 上下文切换