2010-03-23 12 views
9

Mam obraz w UIScrollView, który można przewijać i powiększać.Jak utworzyć obraz z UIView/UIScrollView

Kiedy użytkownik naciśnie przycisk, chcę, aby kod tworzył obraz z jakiejkolwiek części UIScrollView znajduje się w obszarze określonym przez CGRect.

Widziałem kod do przycinania UIImages, ale nie mogę go dostosować, aby zrobić to samo dla widoku, ponieważ używa CGContextDrawImage.

Jakieś myśli?

Cheers, Andre

Odpowiedz

28

udało mi się zdobyć.

Oto moje rozwiązanie, na podstawie kilku różnych te z sieci:

- (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; 
} 

którą nazywasz za pomocą:

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

To było pomocne, dzięki. Jednak mały błąd w metodzie: odnosi się do scrollView, chociaż zamiast tego powinien odwoływać się do imageToCrop, na wypadek gdyby osoba dzwoniąca nie nazwała widoku "scrollView". –

+0

Masz całkowitą rację :) Cieszę się, że znalazłeś to przydatne. Pozdrawiam – Andre

+0

Jest to bardzo przydatne! Dziękuję Andre – Ganesh

Powiązane problemy