我有一个大CGRect和两个小CGRect。我想用红色绘制大的CGRect,并形成两个对应于小CGRect的透明孔。
我无法做到。我曾尝试使用NSBezierPath但在macOS中没有像UIBezierPath for iOS那样的NSBezierPath.CGPath方法。
答案 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
并将其直接添加到故事板上。