gpt4 book ai didi

objective-c - 如何使用 `NSControl` 和 `NSActionCell` 编写自定义控件

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

我正在寻找一个最小的可行示例。我已经用谷歌搜索和阅读了好几天了,但找不到任何最新的资源。

我的 NSControl 工作正常,但是一旦我添加

+ (Class)cellClass {
return [MYCustomCell class];
}

我得到这个输出,我的窗口停止正确绘制

<Error>: kCGErrorFailure: CGSShapeWindow
<Error>: kCGErrorFailure: Set a breakpoint @ CGErrorBreakpoint() to catch errors as they are logged.
_NXPlaceWindow: error setting window shape (1000)
<Error>: kCGErrorFailure: CGSShapeWindow
_NSShapeRoundedWindowWithWeighting: error setting window shape (1000)

我已经阅读了有关此主题的所有内容(包括 Apple 文档),但所有内容似乎都非常模糊,无法正确实现。如果有人能指出我正确的方向(正确的代码示例或文章),我将非常感激。

最佳答案

我相信我终于找到了答案。

必须在 NSCell/NSActionCell 子类中重写 -cellSize 方法。经过大量的堆栈跟踪后,我发现如果没有覆盖此方法,该方法将返回 (40000, 40000) 作为单元格大小,从而产生我们所看到的大小调整错误。由于我的 NSActionCell 子类有特殊需求,需要单元格占据整个 NSControl 的绘图区域,所以我简单地使用了以下内容。

- (NSSize)cellSize {
return self.controlView.bounds.size;
}

希望这对您的情况有所帮助。

关于objective-c - 如何使用 `NSControl` 和 `NSActionCell` 编写自定义控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11618525/

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