何时调用'drawRect'?

时间:2010-03-15 21:32:30

标签: iphone objective-c cocoa cocoa-touch uikit

我在drawRect中有一些自定义绘图代码,它还执行一些大小计算。

最早的时候我可以确定已加载此代码,例如如果我想相应地修改它的容器大小?

4 个答案:

答案 0 :(得分:3)

-[NSView viewWillDraw]是最后一刻布局的合理位置。

答案 1 :(得分:2)

  

我在drawRect中有一些自定义绘图代码,它也执行一些大小计算。

     

最早的时候我可以确定已加载此代码,例如如果我想相应地修改它的容器大小?

在完全加载类之前,对象不能存在。如果你有一个实例,那么它是一个实例的类是完全加载的,因为如果没有实例,你将没有它的实例。

至于什么时候叫它:当你需要画画的时候叫它。这通常作为事件循环的一部分发生,如果有任何事情已将视图标记为需要显示。可以直接告诉NSView显示,但据我所知,这对UIViews来说是不可能的。

所以,如果你需要在它被告知之前做一些事情,要么在创建它之后立即执行,或者如果你要将视图设置为需要显示,请在执行此操作之前执行此操作。

答案 2 :(得分:1)

在显示视图或致电

之前
[aView setNeedsDisplay];

答案 3 :(得分:0)

我刚刚创建了我的第一个customView应用。这是我的一个问题。我的drawRect方法在创建窗口(或重新创建)时被调用一次。在调整窗口大小时有数百万的时间。