【发布时间】:2010-03-15 21:32:30
【问题描述】:
我在drawRect 中有一些自定义绘图代码,它还执行一些尺寸计算。
最早何时可以确定此代码已加载,例如如果我想相应地修改它的容器大小?
【问题讨论】:
标签: iphone objective-c cocoa cocoa-touch uikit
我在drawRect 中有一些自定义绘图代码,它还执行一些尺寸计算。
最早何时可以确定此代码已加载,例如如果我想相应地修改它的容器大小?
【问题讨论】:
标签: iphone objective-c cocoa cocoa-touch uikit
-[NSView viewWillDraw] 是最后一分钟布局的合理位置。
【讨论】:
viewWillAppear 和 viewWillAppear 仅在 UIViewController 上调用。如果您的视图不是由视图控制器管理的,您将无法获得这些方法。
viewWillAppear 可能是一个很好的地方。我们建议您将代码 移出 drawRect。你真的应该在绘图之前做好布局。
我在 drawRect 中有一些自定义绘图代码,它还执行一些尺寸计算。
最早何时可以确定此代码已加载,例如如果我想相应地修改它的容器大小?
一个对象在其类完全加载之前不能存在。如果你有一个实例,那么它是一个实例的类是完全加载的,因为如果没有,你就没有它的实例。
至于何时调用:需要绘制时调用。这通常作为事件循环的一部分发生,如果有任何东西将视图标记为需要显示。可以直接告诉 NSView 显示,但据我所知,这对于 UIView 是不可能的。
因此,如果您需要在它被告知之前对其执行某些操作,请在创建后立即执行此操作,或者,如果您要将视图设置为需要显示,请在执行此操作之前执行此操作。
【讨论】:
就在视图显示之前或调用时
[aView setNeedsDisplay];
【讨论】:
我刚刚创建了我的第一个 customView 应用。这是我的问题之一。我的 drawRect 方法在创建我的窗口(或重新创建)时被调用一次。以及调整我的窗口大小时的数百万次。
【讨论】: