2010-03-23 4 views
9

У меня есть изображение в UIScrollView, которое можно прокручивать и масштабировать.Как создать изображение из UIView/UIScrollView

Когда пользователь нажимает кнопку, я хочу, чтобы код создавал изображение из любой части UIScrollView внутри области, которую я указываю с помощью CGRect.

Я видел код для обрезания UIImages, но я не могу его адаптировать, чтобы сделать то же самое для представления, потому что он использует CGContextDrawImage.

Любые мысли?

Приветствия, Andre

ответ

28

мне удалось получить его.

Вот мое решение, основанное на нескольких различных них из Интернета:

- (UIImage *)imageByCropping:(UIScrollView *)imageToCrop toRect:(CGRect)rect 
{ 
    CGSize pageSize = rect.size; 
    UIGraphicsBeginImageContext(pageSize); 

    CGContextRef resizedContext = UIGraphicsGetCurrentContext(); 
    CGContextTranslateCTM(resizedContext, -imageToCrop.contentOffset.x, -imageToCrop.contentOffset.y); 
    [imageToCrop.layer renderInContext:resizedContext]; 
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 

    UIGraphicsEndImageContext(); 

    return image; 
} 

который вы звоните с помощью:

CGRect clippedRect = CGRectMake(0, 0, 320, 300); 
picture.image = [self imageByCropping:myScrollView toRect:clippedRect]; 
+0

Это было полезно, спасибо. Небольшая ошибка в методе: это относится к scrollView, хотя вместо этого он должен ссылаться на imageToCrop, если вызывающий абонент не назвал представление «scrollView». –

+0

Ты совершенно прав :) Я рад, что ты нашел его полезным. Cheers – Andre

+0

Это очень полезно! Спасибо Андре – Ganesh