2017-01-25 4 views
0

Haben Sie Probleme eine NSImage in einer CALayerCocoa CALayer Anzeige nicht NSImage

init(image: NSImage) { 
     self.image = image 
     super.init(frame: .zero) 
} 

required init(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
} 

override func viewWillDraw() { 
    super.viewWillDraw() 
    animationLayer.contentsGravity = kCAGravityResizeAspect 
    animationLayer.frame = CGRect(x: 0, y: 0, width: frame.size.width, height: frame.size.height) 
    animationLayer.contents = image.cgImage 
    animationLayer.masksToBounds = true 
    animationLayer.backgroundColor = NSColor.blue.cgColor 

    wantsLayer = true 
    layer?.addSublayer(animationLayer) 
} 

Die CALayer mit dem backgroundColor Satz als blau fein rendert die Anzeige, aber die NSImage nicht. Die NSImage enthält das erforderliche Bild und wird bei der Initialisierung der Klasse gesetzt.

Nachdem ich dasselbe innerhalb des iOS-Frameworks entwickelt habe, habe ich Schwierigkeiten, den Unterschied zu sehen.

Antwort

1

Im Gegensatz zu iOS image Eigenschaft von CALayer in macOS berücksichtigt NSImage eher als seine CGImage Darstellung.

animationLayer.contents = image 
+0

Entfernt meinen letzten Kommentar, wie es tatsächlich funktioniert;) Danke – RichAppz