(我发现了几个类似的问题,但并没有完全一样。一些问题比所涉及的操作系统还老。一些正在做疯狂的事情,例如完全自定义的窗口。我没有人找到有关如何使一个完全普通的窗口正常工作的说明。)

从OS X Lion开始,标准窗口已变成圆角。不幸的是,我在将其复制到应用程序时遇到了麻烦。当将NSView推向NSWindow的角时,有时它会夹在圆形NSWindow上,有时会逃逸并形成一个方形角。

我还无法弄清楚一种模式。

  • 即使“绘制背景”的NSView有时也会强制出现方形角,所以不是那样。
  • 我的自定义NSView制作了方形角(如果我在边缘附近,我要负责检查我在NSWindow中的位置,并裁剪到该位置吗?),但是一些标准的Cocoa控件也可以这样做。

  • 例如,创建一个新的Cocoa项目,在主NSWindow中放置一个(滚动的)NSTableView或NSTextView,并添加布局约束,使其遵循窗口的边缘。底角是正方形!相比之下,Finder拥有一个(看起来像)NSTableView,它正对着窗口的下角,并且是四舍五入的。

    如何制作一个普通的NSWindow,底部具有适当的圆角?

    最佳答案

    为了使NSWindow将其内容剪切到其实际窗口边界(为什么不是默认值,这是该设置),设置的标志是NSView的wantsLayer

  • 在代码:contentView!.wantsLayer = true中,加载窗口时。
  • 或在IB中:选择窗口的根 View ,然后在“ View 效果检查器”中的“核心动画层”中选中其旁边的框(即使您未使用核心动画)。

  • Meta:documentation for wantsLayer 讨论了很多看起来完全与窗口形状或裁剪无关的复杂事物,它甚至都不是NSWindow的属性,而NSWindow具有一些声称与窗口角圆角有关的标志,但这些标志并没有不再工作了,所以我不确定应该如何发现这一点,除非花了两天的试验和错误时间。我希望这个答案对其他人有帮助!

    关于macos - NSWindow何时才变成圆角?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38986010/

    10-13 03:45