iOS UI视图问题总结(事件传递、UI掉帧优化、异步绘制等)
2019-02-21 本文已影响0人
num_one
1.事件传递
事件传递常用方法:
事件传递常用方法// 返回最终哪个视图响应了事件
- (nullable UIView *)hitTest:(CGPoint)point withEvent:(nullable UIEvent *)event;
// 判断点击的位置是否在当前视图范围内
- (BOOL)pointInside:(CGPoint)point withEvent:(nullable UIEvent *)event;
事件传递流程:
事件传递流程方法 hitTest:withEvent: 内部实现图
hitTest:withEvent: 内部实现图例题
例题问:如果点击C1和C2交叉区域,为什么响应的是C2?
答:因为在事件传递流程中,pointInside:方法会倒序遍历Subviews,就是说越晚添加的视图,层级越高,响应级别越高。
2.图像显示原理及UI卡顿、掉帧的优化
图像显示原理 图像显示原理 CPU工作1.layout:UI布局frame,文本计算label的size计算等。
2.display:绘制过程drawRect方法。
3.prepare:图片解码。
4.commit:提交位图。
UI卡顿、掉帧的原因
UI卡顿、掉帧的原因通常FPS=60时UI流畅,此时每隔16.7ms(毫秒)就会绘制一张图。那么在规定的16.7ms内CPU与GPU运行时间大于16.7ms,就会出现掉帧现象。
滑动优化-CPU 滑动优化-GPU3.滑动优化-CPU
UIView绘制原理
UIView绘制原理 UIView绘制原理-系统绘制流程 UIView绘制原理-异步绘制流程4.滑动优化-GPU
离屏渲染
离屏渲染1 离屏渲染2小结
UI视图问题总结1.略。
2.可以从CPU和GPU两方面回答,CPU层面在子线程上做预排版、图片解码、异步绘制等耗时操作。GPU层面就是尽量避免离屏渲染,异步绘制图像。
3.略。
4.可以体现出单一职责设计原则。
👏👏👏欢迎大家加入群组(IT_大前端技术交流群),技术交流群
IT_大前端技术交流群