2010-03-23 73 views
9

我在UIScrollView中有一個圖像,可以滾動和縮放。如何從UIView/UIScrollView創建圖像

當用戶按下一個按鈕時,我希望代碼創建一個圖像,從UIScrollView的任何部分是在我用CGRect指定的區域內。

我已經看到了代碼來裁剪UIImages,但我不能適應它做一個視圖相同,因爲它使用CGContextDrawImage。

有什麼想法?

乾杯, 安德烈

回答

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」。 – 2010-05-20 11:48:09

+0

你完全正確:)我很高興你發現它有用,但。 乾杯 – Andre 2010-05-20 12:28:22

+0

這非常有用!謝謝安德烈 – Ganesh 2010-10-29 07:35:28