为什么当我勾选CoreAnimationLayer启用时,背景颜色不能透明?

时间:2014-12-21 15:46:44

标签: macos cocoa swift core-animation

我有一个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
}

这是模拟结果: enter image description here

彩色背景是墙纸,它是透明的。所以,我可以看到背景。但是,当我打开NSView中的Core Animation Layer时会发生这种情况。它变成灰色,这不是我的预期。发生了什么?谢谢。 enter image description here

0 个答案:

没有答案