美文网首页
UI视图面试小结

UI视图面试小结

作者: TAsama | 来源:发表于2019-03-24 10:49 被阅读0次
  1. UITableView重用机制,重点“重用池”
  2. UITableView的数据源异步操作,可以使用队列方式,如下图:


    UITabeleView的异步处理数据源操作
  3. UIView和CALayer的关系
  • UIView为其提供内容,以及负责处理触摸等事件,参与响应链
  • CALayer负责显示内容contents

这种方式符合设计模式中的单一职能原则

  1. 事件传递
    在事件传递中核心关键点就是会调用到:
- (UIView *)hitTest:(CGPoint)point with Event:(UIEvent *)event;
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event;

这两个方法,第一个方法用于找出事件的响应者,第二个方法用于确定事件触发的位置。
通过这两个方法来做事件的传递和响应过程,如下图:


事件传递

hittest方法内部会进行一个递归调用,对响应者的所有subviews调用hittest,如下图:


hitTest的系统实现
  1. 图像显示原理


    图像显示原理

    可以看到,CPU处理了UI布局,绘制,以及图片编解码等预处理工作,最后将bitmap位图提交给GPU进行屏幕渲染。

  2. UI卡顿、掉帧的原因
    屏幕的刷新频率是60帧,即每16.7ms就会进行一次屏幕刷新,如果此时系统中绘制渲染工作还没有完成,则会将显示拖延到下一个刷新点,这样就会造成掉帧,如下图中的这种情况:


    UI卡顿、掉帧的原因
  3. 优化方案
  • CPU
    对象创建、调整、销毁
    预排版(布局计算、文本计算)
    预渲染(文本等异步绘制,图片编解码)
  • GPU
    纹理渲染
    视图混合(在绘制时减少图层层级,将多个层级绘制到一个层级下,以减少GPU在做视图混合时消耗的时间)

UIView的绘制原理


UIView的绘制原理

CALayer会在当前loop结束前调用自身的display方法进行绘制,下图是系统调用CALayer的display方法绘制的流程:


CALayer的系统绘制流程
UIView的drawRect方法是一个空方法,他给调用者提供了一个在系统绘制的基础上二次操作的空间。
bitmap作为layer的contents属性的值,在被赋值后提交给GPU进行渲染。

我们可以在displayLayer方法中进行异步绘制。


异步绘制
  1. 离屏渲染
  • On-Screen Rendering
    意为当前屏幕渲染,指的是GPU的渲染操作是在当前用于显示的屏幕缓冲区中进行
  • Off-Screen Rendering
    意为离屏渲染,指的是GPU在当前屏幕缓冲区以外新开辟一个缓冲区进行渲染操作

何时会触发?

  • 圆角(当和maskToBounds一起使用时)
  • 图层蒙版
  • 阴影

由于离屏渲染要创建新的渲染缓冲区,同时还要进行上下文的切换,这会增加GPU的处理时间,可能会造成掉帧

相关文章

  • UI视图面试小结

    UITableView重用机制,重点“重用池” UITableView的数据源异步操作,可以使用队列方式,如下图:...

  • iOS 面试 -- UI视图

    前言 本文主要就是从 UITableView、事件传递、视图响应、图像显示原理、卡顿掉帧、异步绘制和绘制原理以及离...

  • iOS面试 UI视图

    1、UITableView相关(1) 重用机制 利用重用标识符,查看重用池中是否存在可复用的视图,如果没有,cel...

  • OC总结篇 - UI视图

    UI视图 - 图像显现原理和滑动优化UI视图 - UI事件传递及视图响应链UI视图 - UITableView重用...

  • iOS面试准备之思维导图(附资料)

    目录 1.UI视图相关面试问题 2.Runtime相关面试问题 3.内存管理相关面试问题 4.Block相关面试问...

  • ios 面试指南思维导图

    1.UI视图相关面试问题 2.Runtime相关面试问题 3.内存管理相关面试问题 4.Block相关面试问题 5...

  • iOS面试 -- UI视图相关

    UITableView 复用机制 为什么要用重用机制? 当UITableView滚动时,如果不用重用机制,会重复初...

  • iOS面试准备之思维导图

    目录 1.UI视图相关面试问题2.Objective-C语言特性相关面试问题3.Runtime相关面试问题4.内存...

  • iOS面试准备之思维导图

    目录 1.UI视图相关面试问题2.Objective-C语言特性相关面试问题3.Runtime相关面试问题4.内存...

  • iOS笔试题集锦

    转载原文链接 面试能力要求:精通iphone的UI开发,能熟练操作复杂表视图,熟练使用图层技术, 可以自定义UI控...

网友评论

      本文标题:UI视图面试小结

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