La forma más eficiente de dibujar parte de una imagen en iOS
Dan anUIImage
y unCGRect
, cuál es la forma más eficiente (en memoria y tiempo) de dibujar la parte de la imagen correspondiente a laCGRect
(sin escalar)?
Para referencia, así es como lo hago actualmente:
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGRect frameRect = CGRectMake(frameOrigin.x + rect.origin.x, frameOrigin.y + rect.origin.y, rect.size.width, rect.size.height);
CGImageRef imageRef = CGImageCreateWithImageInRect(image_.CGImage, frameRect);
CGContextTranslateCTM(context, 0, rect.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextDrawImage(context, rect, imageRef);
CGImageRelease(imageRef);
}
esafortunadamente, esto parece extremadamente lento con imágenes de tamaño mediano y una altasetNeedsDisplay
frecuencia. Jugando conUIImageView
l marco de @ yclipToBounds
produce mejores resultados (con menos flexibilidad).