我有一个NSWindow和一个NSView。在NSView中,我重写drawRect
方法,如下所示:
override func drawRect(dirtyRect: NSRect) {
NSColor.clearColor().set()
NSRectFill(self.frame)
self.layer?.backgroundColor = NSColor.clearColor().CGColor
let context = NSGraphicsContext.currentContext()?.CGContext
CGContextSetStrokeColorWithColor(context, NSColor.redColor().CGColor)
CGContextSetLineWidth(context, 200.0)
CGContextMoveToPoint(context, 0.0, 0.0) //start at this point
CGContextAddLineToPoint(context, 500, 1000) //draw to this point
// and now draw the Path!
CGContextStrokePath(context)
}
NSWindow就像这样实现:
override init(contentRect: NSRect, styleMask aStyle: Int, backing bufferingType: NSBackingStoreType, defer flag: Bool) {
super.init(contentRect: contentRect, styleMask: aStyle, backing: NSBackingStoreType.Buffered, defer: false)
self.alphaValue = 1
self.opaque = false
}
这是模拟结果:
彩色背景是墙纸,它是透明的。所以,我可以看到背景。但是,当我打开NSView中的Core Animation Layer
时会发生这种情况。它变成灰色,这不是我的预期。发生了什么?谢谢。