Cocoa 如何说出什么';是什么导致调用drawRect的?
我有一个自定义的NSView,里面有一堆自定义按钮,这些按钮作为子视图添加到NSView的drawRect方法中 现在我发现在按下一个按钮之后,父视图的drawRect会被反复调用。有时,它只在我退出应用程序时停止——我从drawRect中的一个简单日志语句中知道这一点 现在我知道在我的应用程序中可能有更大的架构问题导致了这一点,我该从哪里开始追踪导致此视图被反复重画的原因Cocoa 如何说出什么';是什么导致调用drawRect的?,cocoa,debugging,nsview,Cocoa,Debugging,Nsview,我有一个自定义的NSView,里面有一堆自定义按钮,这些按钮作为子视图添加到NSView的drawRect方法中 现在我发现在按下一个按钮之后,父视图的drawRect会被反复调用。有时,它只在我退出应用程序时停止——我从drawRect中的一个简单日志语句中知道这一点 现在我知道在我的应用程序中可能有更大的架构问题导致了这一点,我该从哪里开始追踪导致此视图被反复重画的原因 谢谢 首先,您不应该在drawRect:中添加子视图 您是在进行自定义绘图还是只添加子视图?如果不进行任何绘图,则不应实现
谢谢 首先,您不应该在
drawRect:
中添加子视图
您是在进行自定义绘图还是只添加子视图?如果不进行任何绘图,则不应实现drawRect:
您希望在initWithFrame:
中添加子视图,然后根据self.bounds
在layoutSubviews
中设置子视图的框架
如果您有任何问题,请随时提问
编辑:刚刚意识到您询问的是NSView而不是UIView。我从未使用过NSView,但它们的工作原理可能类似
编辑2:我读了一点关于NSView的内容,它似乎没有
布局子视图
。也许您应该在drawRect:
中设置帧?我仍然非常确定您不想在drawRect:
中添加子视图。首先,您不应该在drawRect:
中添加子视图
您是在进行自定义绘图还是只添加子视图?如果不进行任何绘图,则不应实现drawRect:
您希望在initWithFrame:
中添加子视图,然后根据self.bounds
在layoutSubviews
中设置子视图的框架
如果您有任何问题,请随时提问
编辑:刚刚意识到您询问的是NSView而不是UIView。我从未使用过NSView,但它们的工作原理可能类似
编辑2:我读了一点关于NSView的内容,它似乎没有
布局子视图
。也许您应该在drawRect:
中设置帧?我仍然非常确定您不想在drawRect:
中添加子视图,非常感谢您的回答-我没有意识到我滥用了drawRect。我已经删除了子视图的添加,并确保只在必要时调用它,现在一切正常。非常好,谢谢你的回答-我没有意识到我滥用了drawRect。我已经删除了子视图的添加,并确保只在必要时调用它,现在一切正常。