在UIView实现中,在什么条件下是drawRect:被调用?

时间:2012-02-23 08:33:09

标签: objective-c cocoa-touch uiview core-animation calayer

我理解调用setNeedsDisplay会调用drawRect:,但我想问一下可能会导致调用setNeedsDisplay的视图(当然除非你想明确地调用它),例如

  • 调整视图调用drawRect本身的大小吗?它的子视图怎么样?

1 个答案:

答案 0 :(得分:4)

只要需要重绘视图,就会调用它。因此,当设置内部标志时,setNeedsDisplay将设置。

当然,做其他事情可能会导致setNeedsDisplay被调用。例如,如果您使用UIViewContentModeRedraw的内容模式,那么根据文档:

  

<强> UIViewContentModeRedraw

     

通过调用setNeedsDisplay方法在边界更改时重新显示视图。

如果使用此内容模式,您将在绑定更改后发生drawRect:

除此之外,我无法想到任何其他方法会产生调用setNeedsDisplay的副作用,但可能会有更多。