当用户与程序的界面进行交互时,或者通过代码控制一些东西时,UIKit中会发生一系列复杂的事件来处理这张交互。在这一系例事件的特定时间点,UIKit会调用你的view class让你能够对这些事件作出响应。下图展示了从用户点击屏幕到图像系统更新屏幕内容的整个基本过程。

- 用户触摸屏幕
- 硬件向UIKit报告触摸事件
- UIKit将事件转成UIEvent对象,将它分发到对应的View
- view的事件处理代码来响应事件,比如你可以:
- 改变view的属性
- 调用setNeedsLayout将view标记成需要布局更新
- 调用setNeedsDisplay将view标记为需要重新绘制
- 通知controller这些修改
- 如果view的几何形状改变了,UIKit会根据下面的规则来更新它的子View:
- 如果配置了autoresizing规则,则UIKit会根据这些规则更新
- 如果view实现了layoutSubviews,UIKit会调用它
- 如果view的某部分标记为需要重新绘制,UIKit会向view请求重新绘制它
- 更新过的view会和其余的可见内容一起组合发送给图像处理的硬件进行显示
- 图像处理的硬件将渲染过的内容发送给屏幕
网友评论