如何判断是什么导致drawRect被调用?

时间:2011-03-21 08:03:42

标签: cocoa debugging nsview

我的自定义NSView中包含一些自定义按钮,这些按钮在NSView的drawRect方法中作为子视图添加。

现在我发现按下按钮后会重复调用父视图的drawRect。有时它只在我退出应用程序时停止 - 我从drawRect中的简单日志语句中知道这一点。

现在我知道我的应用程序中可能存在更大的架构问题导致这种问题,我在哪里开始追踪导致此视图被重复重绘的原因?

谢谢!

1 个答案:

答案 0 :(得分:1)

首先,您不应该在drawRect:中添加子视图。

您是在进行任何自定义绘图还是仅添加子视图?如果您没有进行任何绘图,则不应实施drawRect:

您想在initWithFrame:中添加子视图,然后根据layoutSubviewsself.bounds中设置子视图的框架。

如果您有任何疑问,请随时提出。

编辑:刚刚意识到你在询问NSView而不是UIView。我从未使用过NSView,但也许它们的工作方式类似。

编辑2:我读了一些关于NSView的内容,它似乎没有layoutSubviews。也许您应该在drawRect:中设置框架?我仍然非常确定您不想在drawRect:中添加子视图。