在ViewController的主NSView中,我重写了func drawRect(dirtyRect: NSRect)方法,以使用NSBezierPath在主 View 上实现圆角。
用同样的方法,我还指定了主 View 的渐变背景。

override func drawRect(dirtyRect: NSRect) {

    let path: NSBezierPath = NSBezierPath(roundedRect: self.bounds, xRadius: 18.0, yRadius: 18.0)
    path.addClip()

   let gradient = NSGradient(startingColor: NSColor(hexColorCode: "#383838"), endingColor: NSColor(hexColorCode: "#222222"))
   gradient.drawInRect(self.frame, angle: 90)
}

下图说明了出现的问题:

该图显示了其中一个 View 角。圆角的倒圆只是部分成功,因为仍然有一个白色的圆角伸出窗口的圆角之外。

如果有人有更好的方法设置窗口的拐角半径,我会接受这样的建议。我对此事进行了大量研究,但是这种解决方案似乎是最简单的。

非常感谢您提供有关如何解决此问题的任何建议。

最佳答案

您应该在NSWindow实例上执行以下操作:

[window setOpaque:NO];
[window setBackgroundColor:[NSColor clearColor]];

并绘制所需的形状。

并检查this article

关于macos - 使用NSBezierPath在NSView上绘制圆角很差,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30950099/

10-13 08:05