Учитывая UIImage
и CGRect
, каков наиболее эффективный способ (по памяти и времени) отрисовать часть изображение, соответствующее CGRect
(без масштабирования)?
Для справки, вот как я сейчас это делаю:
- (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);
}
К сожалению, это кажется очень медленным с изображениями среднего размера и высоким setNeedsDisplay
частота. Игра с кадром UIImageView
и clipToBounds
дает лучшие результаты (с меньшей гибкостью).