Самый эффективный способ рисования части изображения в iOS

Учитывая 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 дает лучшие результаты (с меньшей гибкостью).

36
задан hpique 22 November 2011 в 21:31
поделиться