美文网首页
iOS UI视图问题总结(事件传递、UI掉帧优化、异步绘制等)

iOS UI视图问题总结(事件传递、UI掉帧优化、异步绘制等)

作者: num_one | 来源:发表于2019-02-21 10:26 被阅读0次

    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:提交位图。

    GPU工作
    UI卡顿、掉帧的原因
    UI卡顿、掉帧的原因

    通常FPS=60时UI流畅,此时每隔16.7ms(毫秒)就会绘制一张图。那么在规定的16.7ms内CPU与GPU运行时间大于16.7ms,就会出现掉帧现象。

    滑动优化-CPU 滑动优化-GPU

    3.滑动优化-CPU

    UIView绘制原理
    UIView绘制原理 UIView绘制原理-系统绘制流程 UIView绘制原理-异步绘制流程

    4.滑动优化-GPU

    离屏渲染
    离屏渲染1 离屏渲染2

    小结

    UI视图问题总结

    1.略。
    2.可以从CPU和GPU两方面回答,CPU层面在子线程上做预排版、图片解码、异步绘制等耗时操作。GPU层面就是尽量避免离屏渲染,异步绘制图像。
    3.略。
    4.可以体现出单一职责设计原则。

    👏👏👏欢迎大家加入群组(IT_大前端技术交流群),技术交流群
    
    IT_大前端技术交流群

    相关文章

      网友评论

          本文标题:iOS UI视图问题总结(事件传递、UI掉帧优化、异步绘制等)

          本文链接:https://www.haomeiwen.com/subject/yyohyqtx.html