2010-03-23 16 views
9

Ho un'immagine in un UIScrollView, che si possono scorrere e ingrandita.Come creare un'immagine da un UIView/UIScrollView

Quando l'utente preme un pulsante, voglio il codice per creare un'immagine da qualunque parte del UIScrollView è all'interno di un'area a specificare con un CGRect.

ho visto il codice per ritagliare UIImages, ma non posso adattarlo a fare lo stesso per una vista, perché utilizza CGContextDrawImage.

Qualche idea?

Cheers, Andre

risposta

28

sono riuscito a ottenerlo.

Ecco la mia soluzione, sulla base di alcune fra le più diverse dal web:

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

che voi chiamate utilizzando:

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

che era disponibile, grazie. Un piccolo errore nel metodo, però: si riferisce a ScrollView, anche se dovrebbe riferirsi a imageToCrop invece, nel caso in cui il chiamante non nomina la vista "ScrollView". –

+0

Hai perfettamente ragione :) Sono contento che tu l'abbia trovato utile comunque. Cheers – Andre

+0

Questo è molto utile! Grazie Andre – Ganesh