NSButton角半径和NSPopover

时间:2016-03-23 04:21:32

标签: macos rounded-corners nsbutton nsstatusitem

我正在使用NSPopover,并且我将NSViewController放入其中以显示为来自NSStatusItem的自定义视图。除了具有角半径的NSButton之外,大多数视图控制器都能正确显示。在应用圆角的地方有一些额外的白色泄漏。在实际应用程序中显示按钮,这个问题不会发生。

我觉得必须对我设置的NSPopover外观做一些事情" NSAppearanceNameAqua"。

NSButtons位于NSView中,显示在NSTableView中并设置为此样式。

    self.createdButton.wantsLayer = true
    self.createdButton.layer?.backgroundColor = Utils.blackColor().CGColor
    self.createdButton.layer?.masksToBounds = true
    self.createdButton.layer?.cornerRadius = 5

enter image description here enter image description here

顶部图片是实际应用程序打开时的图像。 底部图像是在NSPopover中显示视图控制器时。

1 个答案:

答案 0 :(得分:0)

使用贝塞尔曲线创建角半径,即

    NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:view.bounds xRadius:3 yRadius:3];
    CAShapeLayer *maskLayer = [CAShapeLayer layer];
    maskLayer.frame = view.bounds;
    maskLayer.path = path.toCGPath;
    self.containerView.layer.mask = maskLayer;