uiimageview content mode
¿Cómo creo un UIImage desde un CGImage en Swift? (4)
¿Estás seguro de que group.posterImage no es opcional?
has probado
var img = UIImage(CGImage: group.posterImage!)
Estoy intentando crear un UIImage
desde el método ALAssetsGroup#posterImage
. En Objective-C, simplemente podría llamar [UIImage imageWithCGImage:group.posterImage]
pero en Swift, UIImage(CGImage: group.posterImage)
me da un error de compilación:
Could not find an overload for ''init'' that accepts the supplied arguments
¿Qué estoy haciendo mal?
Aquí hay un ejemplo que debería funcionar para usted con Xcode 8.3:
let frame = CGRect(origin: CGPoint(x: 0, y: 0), size: CGSize(width: 1920, height: 1080))
let cgImage = CIContext().createCGImage(CIImage(color: .black()), from: frame)!
let uiImage = UIImage(cgImage: cgImage)
Si mira los documentos en Xcode6, verá que posterImage()
devuelve un Unmanaged<CGImage>!
(En Swift, en ObjC devuelve un CGImageRef
). Después de una investigación de los docs encontré esto:
Cuando recibe un objeto no administrado de una API sin anotar, debe convertirlo inmediatamente en un objeto administrado en memoria antes de trabajar con él.
Entonces tu solución sería:
UIImage(CGImage: group.posterImage().takeUnretainedValue())
Utilice init con CGIImage:
UIImage.init(CGImage: group.posterImage, scale: self.scale, orientation: .UpMirrored)