UIView的绘制

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.
 */    

也就是三步:更新约束(计算坐标、尺寸)、布局(排列子视图)、显示(绘制)。
相关的方法主要是updateConstraintslayoutSubviewsdrawRect,这些方法都是由系统在特定情况下进行调用,不需要我们自己调用。如果数据发生了变化想重新渲染,可以使用setNeedsUpdateConstraintssetNeedsLayoutsetNeedsDisplay设置标志。

下面是一个简单测试:

调用顺序

如有错误,欢迎指出!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容