drawRect

drawRect:方法

  • 每次系统调用drawRect方法之前,都会给drawRect方法传递一个跟当前view相关联上下文(即layer上下文),因此只有在drawRect:方法中才能获取到上下文;

  • 实现- (void)drawRect:(CGRect)rect方法,在drawRect:方法中取得上下文后,就可以绘制东西到view上;

  • drawRect:方法在什么时候被调用?

    1. 当view第一次显示到屏幕上时(被加到UIWindow上显示出来),只会调用一次(系统自动调用)
    • drawRect不能手动调用drawRect只能系统调用

    • 需要重绘,则调用view的setNeedsDisplay或者setNeedsDisplayInRect:方法 ,给view绑定重绘标识,每次刷新时重绘

  • 每次调用drawRect,会先将之前的layer清空再重新渲染图案(首先要先设置背景颜色,否则drawRect会乱画)

UIView图形显示本质

  1. UIView自身是与用户交互,图形显示是由layer(图层)属性处理的
  2. layer(图层)分为主(根)层和content层,drawRect:方法中取得的是一个Layer Graphics Context的主层,因此绘制的东西其实是绘制到view的layer上去了
  3. imageView的图形是保存到content层,修改layer根层属性不能影响到content层
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容