如何在Cocoa swift中使用CALayer将NSImage设置为NSView

时间:2017-11-13 07:18:10

标签: swift cocoa calayer nsview nsimage

当我尝试将NSimage设置为NSView时,我的应用程序崩溃了。

  

应用程序在ClockMainview控制器的下面一行崩溃:   QuizDetailVC1.clockView.layer?.contents = a1 //这里是一次崩溃

class ViewController: NSViewController
    {
        var abc1 = ClockMain()
        @IBOutlet var clock view: NSView!
        let layer = CALayer()    
        func ClockApp()
        {
            layer.contents =  abc1.a1
            layer.contentsGravity = kCAGravityResizeAspectFill
            clockView?.layer = layer
            clockView?.wantsLayer = true
        }
    }

    class ClockMain: NSViewController,NSCollectionViewDelegate,NSCollectionViewDataSource
    {
     var a1 = NSImage(named:"\(UserDefaults.standard.value(forKey: "ImageName")!).jpg")!

      func collectionView(_ collectionView: NSCollectionView, didSelectItemsAt indexPaths: Set<IndexPath>)
        {
            let mainWC1 = view.window?.windowController as? Window
            let QuizDetailVC1 = storyboard?.instantiateController(withIdentifier: "ViewController") as! ViewController
            QuizDetailVC1.clockView.layer?.contents  = a1 // here its a crash
            QuizDetailVC1.layer.contentsGravity = kCAGravityResizeAspectFill
            mainWC1?.contentViewController = QuizDetailVC1
            print("click")
         }
    }

1 个答案:

答案 0 :(得分:0)

首先尝试将此行设置为:

std::enable_shared_from_this