gpt4 book ai didi

objective-c - drawRect : override of NSView? 的奇怪行为

转载 作者:行者123 更新时间:2023-12-03 16:33:15 24 4
gpt4 key购买 nike

大家好,

首先感谢大家帮助我解决了我之前的问题。

在覆盖 NSView 的 drawRect: 时,我看到了奇怪的行为。我有一个非常简单的 NSView 子类(RoundedView),它只覆盖了drawRect。我已在界面生成器中将自定义 View 的类设置为 RoudedView。在该 View 中我有一个标签。 drawRect: 按预期正确调用,但令我惊讶的是,该 View 内的 Label 也调用了 RoundedView drawRect: 。这导致标签的矩形由仅用于自定义 View 而不是用于该 View 中的任何其他元素的drawRect绘制。因此,标签的矩形不正确。自定义 View 位于 styleMask 设置为 NSBorderlessWindowMask 的窗口内。

这是正确的行为吗?如何防止为属于 View 一部分的元素调用drawRect?

我已经浏览了堆栈上的所有相关帖子,但不幸的是,结果是空的。

谢谢

罗伯特

最佳答案

不要期望传递给 drawRect: 的矩形始终是 View 的边界。 NSView 能够仅重绘自身需要重绘的部分(因此,该参数称为 dirtyRect)。在这种情况下,标签与 View 的内容重叠,因此每当重绘时, View 系统也需要重绘其后面的 View (您的)。

如果 View 的绘制不是很复杂,您可以忽略传递给您的矩形并使用 View 的边界,否则,您将需要弄清楚如何仅绘制 View 的部分“肮脏”。

关于objective-c - drawRect : override of NSView? 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6019901/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com