macOS绘制一个内部有两个孔的矩形

时间:2016-12-17 18:24:10

标签: swift macos core-graphics mask cgrect

我有一个大CGRect和两个小CGRect。我想用红色绘制大的CGRect,并形成两个对应于小CGRect的透明孔。

我无法做到。我曾尝试使用NSBezierPath但在macOS中没有像UIBezierPath for iOS那样的NSBezierPath.CGPath方法。

1 个答案:

答案 0 :(得分:1)

您不必使用Core Graphics。您可以在NSView中创建stroke子类,并fill / draw(_:)路径。在Swift 3中:

class HolyView: NSView {

    override func draw(_ dirtyRect: NSRect) {
        super.draw(dirtyRect)

        let path = ... // build the `NSBezierPath` however you want

        NSColor.blue.setFill()
        path.fill()
    }

}

然后,您可以通过编程方式添加该视图,也可以将其设为@IBDesignable并将其直接添加到故事板上。

enter image description here