iOS是MVC模式,其中View是UIView或者UIView的子类。如果应用需要实现特殊的效果,通常都是通过自定义UIVew子类来实现的。UIView的父类是UIResponder,顾名思义是用于响应事件,而UIView可以专门来“画图”了(实际上是通过CALayer)。那么一个UIView对象是如何绘制的?
在UIView.h文件中,Apple告诉我们:
/* To render a window, the following passes will occur, if necessary.
update constraints
layout
display
Please see the conceptual documentation for a discussion of these methods.
*/
也就是三步:更新约束(计算坐标、尺寸)、布局(排列子视图)、显示(绘制)。
相关的方法主要是updateConstraints
、layoutSubviews
、drawRect
,这些方法都是由系统在特定情况下进行调用,不需要我们自己调用。如果数据发生了变化想重新渲染,可以使用setNeedsUpdateConstraints
、setNeedsLayout
、setNeedsDisplay
设置标志。
下面是一个简单测试:
如有错误,欢迎指出!