2017-09-06 165 views
0

我想在IKImageView上设置NSImage的图像。我已经使用NSImage.cgImage从NSImage获取CGImage,但是要在IKImageView上设置它,我需要图像的属性。我怎样才能获得这些属性?Swift OSX - 在IKImageView上设置NSImage

import Cocoa 
import Quartz 

class AjustarImagemViewController: NSViewController { 

    @IBOutlet weak var imagemIKImageView: IKImageView! 

    var imagem: NSImage? //Receive an image from another view 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     print(imagem) 

     if let imagemRecebida = imagem { 


      let cgImagem = imagemRecebida.cgImage(forProposedRect: nil, context: nil, hints: nil) 

      imagemIKImageView.setImage(cgImagem, imageProperties: [AnyHashable : Any]) 
     } 
    } 

    @IBAction func voltarButtonClicked(_ sender: NSButton) { 

     dismiss(self) 
    } 
} 
+0

你试过路过空字典? –

回答

1

像这样的东西应该做的伎俩:

CGImageSourceRef source; 

source = CGImageSourceCreateWithData((CFDataRef)[cgImagem TIFFRepresentation], NULL); 

NSDictionary* props = (NSDictionary*)CGImageSourceCopyPropertiesAtIndex(source, 0, NULL); 

imagemIKImageView.setImage(cgImagem, imageProperties: props) 
+0

由于您使用过'CGImageSourceCreateWithData',所以您需要调用'CFRelease(source)'。 ARC不适用于ImageIO,并且不释放源代码,您只是创建了内存泄漏。 – Abizern