ios - animatedimage - objective c uiimage
Muestra una imagen o UIImage con un CALayer plano (3)
A menudo he leído que usar un CALayer
lugar de un UIImageView
es un aumento del rendimiento cuando se trata de un uso intensivo de imágenes. Eso tiene sentido, porque UIImageView
causa 3 copias de la imagen en la memoria, que es necesaria para Core Animation. Pero en mi caso no uso Core Animation.
¿Cómo puedo asignar un UIImage
(o sus datos de imagen) a un CALayer
y luego mostrarlo?
La versión ARC requiere un reparto diferente:
self.myView.layer.contents = (__bridge id) self.myImage.CGImage;
CALayer *layer = [[CALayer alloc] init];
layer.contents = (__bridge id _Nullable)([UIImage imageNamed:@"REWIFISocketOff"].CGImage);
UIImage* backgroundImage = [UIImage imageNamed:kBackName];
CALayer* aLayer = [CALayer layer];
CGFloat nativeWidth = CGImageGetWidth(backgroundImage.CGImage);
CGFloat nativeHeight = CGImageGetHeight(backgroundImage.CGImage);
CGRect startFrame = CGRectMake(0.0, 0.0, nativeWidth, nativeHeight);
aLayer.contents = (id)backgroundImage.CGImage;
aLayer.frame = startFrame;
o en un área de juegos Swift (tendrás que proporcionar tu propia imagen PNG en el archivo de recursos del área de juegos. Estoy usando el ejemplo de "FrogAvatar").
//: Playground - noun: a place where people can play
import UIKit
if let backgroundImage = UIImage(named: "FrogAvatar") // you will have to provide your own image in your playground''s Resource file
{
let height = backgroundImage.size.height
let width = backgroundImage.size.width
let aLayer = CALayer()
let startFrame = CGRect(x: 0, y: 0, width: width, height: height)
let aView = UIView(frame: startFrame)
aLayer.frame = startFrame
aLayer.contentsScale = aView.contentScaleFactor
aLayer.contents = backgroundImage.cgImage
aView.layer.addSublayer(aLayer)
aView // look at this via the Playground''s 👁 eye icon
}