(我发现了几个类似的问题,但没有完全相同的问题。有些比有问题的操作系统更旧。有些正在做疯狂的事情,比如完全自定义的窗口。我发现没有人有关于如何使一个完全普通的窗口工作的说明正确。)
从 OS X Lion 开始,标准窗口都有圆角。不幸的是,我在我的应用程序中复制这一点时遇到了困难。当 NSView 被推到 NSWindow 的角上时,有时它会被夹在圆形 NSWindow 上,有时它会逃脱并形成一个方角。
我还没能找出规律。
- 即使是“绘制背景”的 NSView 有时也会强制使用方角,所以事实并非如此。
- 我的自定义 NSView 会形成方角(我是否负责检查我在 NSWindow 中的位置,并在靠近边缘时进行裁剪?),但某些标准 Cocoa 控件也会这样做。
例如,创建一个新的 Cocoa 项目,在主 NSWindow 中放置一个(滚动)NSTableView 或 NSTextView,并添加布局约束,使其遵循窗口的边缘。底角是方形的!相比之下,Finder 有一个(看起来像)NSTableView,位于窗口的底角,并且是圆形的。
如何制作一个普通的 NSWindow,底部有适当的圆角?
最佳答案
要设置的标志是 NSView 的 wantsLayer
,以便让 NSWindow 将其内容剪辑到其实际窗口边框(为什么这不是默认值?)。
在代码中:
contentView!.wantsLayer = true
,当窗口加载时。或者在 IB 中:选择窗口的 Root View ,然后在“ View 效果检查器”中,选中“核心动画层”中它旁边的框(即使您没有使用核心动画) .
元:documentation for wantsLayer
谈论了很多复杂的事情,这些事情似乎与窗口形状或裁剪完全无关,它甚至不是 NSWindow 的属性,而 NSWindow 有一些标志声称与窗口角圆角有关,但它们不起作用更多,所以我不确定除了花 2 天的反复试验之外,人们应该如何发现这一点。我希望这个答案对其他人有帮助!
关于macos - NSWindow 到底什么时候会变成圆角?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38986010/