NSView 在 macOS 14 上停止剪裁到边界

NSView stopped clipping to bounds on macOS 14

提问人:Vicente Garcia 提问时间:10/1/2023 更新时间:10/1/2023 访问量:99

问:

在最新的 Xcode 上构建时,我有一个 macOS 应用程序,并且在 UI 的许多元素上进行测试似乎是错误的。AppKitXcode 15macOS 14

乍一看,似乎他们的视图在用来做的时候停止了剪裁到边界,因为在某些情况下,我依靠这种行为来显示/隐藏工具栏中的按钮。

Swift macOS NSView AppKit

评论


答:

1赞 Vicente Garcia 10/1/2023 #1

裁剪到边界

macOS 14Xcode 15 开始有一个新属性:clipsToBounds,类似于 for 上的属性,但不同的是,在 NSView 上以前没有这样的东西。NSViewUIViewiOS

即使文档说这是可用的,因为我确信几个月前不存在,而且行为也会发生变化。macOS 10.9+

从文档中:

默认情况下,此值为 false。在 macOS 13 及更低版本中,默认 value 为 true。

不确定这是否在 WWDC 上涵盖,我只是忽略了更新,但我可以预测这将破坏许多应用程序。AppKit

修复它并采用旧行为很简单:

myNSView.clipsToBounds = true

评论

0赞 Willeke 10/1/2023
clipsToBounds是 macOS 13 SDK 中的私有属性。
2赞 Willeke 10/1/2023
请参阅 macOS 14 的 AppKit 发行说明“对于链接到 macOS 14 SDK 的应用程序,此属性的默认值为 false。链接到旧版 SDK 的应用默认为 true。