在CALayer中显示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)
 }


backgroundColor设置为蓝色的CALayer可以正常渲染,但NSImage则不能。确认NSImage包含所需的图像,并在类初始化时进行设置。

在iOS框架中开发了相同的东西之后,我努力地看到了差异。

最佳答案

与iOS中的不同,macOS中imageCALayer属性考虑的是NSImage而不是其CGImage表示形式。

animationLayer.contents = image

关于macos - cocoa CALayer不显示NSImage,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41841163/

10-09 21:07