macos - NSWindow 到底什么时候会变成圆角?

标签 macos cocoa nswindow

(我发现了几个类似的问题,但没有完全相同的问题。有些比有问题的操作系统更旧。有些正在做疯狂的事情,比如完全自定义的窗口。我发现没有人有关于如何使一个完全普通的窗口工作的说明正确。)

从 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/

相关文章:

xml - XPath 和 Jabber-RPC

macos - Mac SDK 全屏,有多个窗口

从 Mac 上的 XCode 交叉编译到 Windows

macos - 让 OpenCV 在 OSX Mavericks 上使用 Processing 2.1.1

objective-c - 为什么编译器说我还没有声明我的变量?

objective-c - 模态子窗口 - 类似于工作表但不是工作表

objective-c - 固定对象位于 NSWindow 右侧

macos - 尝试 self 更新 Composer 时出错

macos - 二进制格式的 md5 哈希函数

iphone - 适用于 Objective-C/iPhone 的良好 HTTP 库?