【发布时间】:2011-03-21 16:33:44
【问题描述】:
我的自定义 NSView 中有一堆自定义按钮,这些按钮作为子视图添加到 NSView 的 drawRect 方法中。
现在我发现在按下按钮后,父视图的 drawRect 会被重复调用。有时它只会在我退出应用程序时停止 - 我从 drawRect 中的一个简单日志语句中知道这一点。
现在我知道我的应用中可能存在更大的架构问题导致此问题,我该从哪里开始追踪导致此视图反复重绘的原因?
谢谢!
【问题讨论】:
我的自定义 NSView 中有一堆自定义按钮,这些按钮作为子视图添加到 NSView 的 drawRect 方法中。
现在我发现在按下按钮后,父视图的 drawRect 会被重复调用。有时它只会在我退出应用程序时停止 - 我从 drawRect 中的一个简单日志语句中知道这一点。
现在我知道我的应用中可能存在更大的架构问题导致此问题,我该从哪里开始追踪导致此视图反复重绘的原因?
谢谢!
【问题讨论】:
首先,您不应该在drawRect: 中添加子视图。
您是在做任何自定义绘图还是只是添加子视图?如果你不做任何绘图,你不应该实现drawRect:。
您想在initWithFrame: 中添加子视图,然后您想根据self.bounds 设置layoutSubviews 中的子视图的框架。
如果您有任何问题,请随时提出。
编辑:刚刚意识到您在询问 NSView 而不是 UIView。我从未使用过 NSView,但也许它们的工作方式类似。
编辑 2: 我读了一些关于 NSView 的文章,但它似乎没有 layoutSubviews。也许您应该在drawRect: 中设置框架?我仍然很确定您不想在 drawRect: 中添加子视图。
【讨论】: