iOS开发—drawRect的作用和调用机制

一、重绘机制介绍

iOS中drawRect方法一般是用来绘制UIView类的,一般当我们对某个控件有特殊绘制需要时,需要重写该UIView类的drawRect方法用以完成绘制。

二、drawRect相关方法介绍

①、- (void)drawRect:(CGRect)rect;

重写此方法,执行重绘任务

②、- (void)setNeedsDisplay;

需要重绘,异步调用drawRect

③、- (void)setNeedsDisplayInRect:(CGRect)rect;

需要局部重绘,同样会异步调用drawRect

三、调用机制

drawRect一般调用时在Controller->loadView,Controller->viewDidLoad两个方法之后调用的。(这是系统自动的调用机制)

当需要时,还需要手动调用,当然直接调用drawRect方法是没有效果的。

需要调用setNeedsDisplay 或者 setNeedsDisplayInRect:方法去实现调用。

  • 1、如果在UIView初始化时没有设置rect大小,将直接导致drawRect不被自动调用。

  • 2、该方法在调用sizeThatFits后被调用,所以可以先调用sizeToFit计算出size。然后系统自动调用drawRect:方法。

  • 3、通过设置contentMode属性值为UIViewContentModeRedraw。那么将在每次设置或更改frame的时候自动调用drawRect:。

  • 4、直接调用setNeedsDisplay,或者setNeedsDisplayInRect:触发drawRect:,但是有个前提条件是rect不能为0. 以上1,2推荐;而3,4不提倡

最后附上参考的文章,大部分摘自这篇文章。

iOS开发之drawRect的作用和调用机制

你可能感兴趣的:(iOS开发—drawRect的作用和调用机制)