objective animatedimage ios iphone performance uiimage core-animation

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 }