Domanda

Sto avendo difficoltà a fare un ri-considerevole rettangolo di ritaglio le mie immagini.Io sto cercando di realizzare qualcosa di simile a questa immagine:

http://img192.imageshack.us/img192/8930/customcropbox.jpg

Bene, l'unico problema è che non ho idea di dove per avviare.Ho bisogno di un consiglio di come posso ottenere questo effetto di ritaglio.Quale documentazione devo leggere?Grafica di base o Quartz 2d?In entrambi i casi?Ho codifica per l'iPhone, in quanto è la data di rilascio, ma non ho mai effettivamente utilizzati core e grafica etc.Qualsiasi aiuto o consiglio sarebbe molto apprezzato.Io lancio il mio codice qui come ho progresso per mostrare come è fatto quando ho raggiungerlo.:-) Inoltre, questa scatola rettangolare è mobile attraverso lo schermo in una UIImageView, che solo rende più interessante.Grazie per l'aiuto e attendo con ansia il raggiungimento di questo obiettivo.

È stato utile?

Soluzione

il mio preferito domanda che è esattamente la stessa.

Ho come lontano come muoversi intorno al mio ritaglio di vista e avendo mostra la porzione di immagine correttamente, ma che fare con la scrollview zoom è un work in progress.attualmente ho una imageview e pianura UIView a strati in UIScrollview, quindi al di fuori della scrollview e a un livello superiore la mia abitudine di ritaglio UIView.Implementare i tocchi metodi per trattare con trascinandolo in giro, e anche drawRect:

- (void)drawRect:(CGRect)rect {
    // Drawing code
    if( self.image == nil )
        return;

    CGPoint offset = scrollView.contentOffset;
    clipRect = CGRectOffset(self.frame, offset.x, offset.y);

    UIImage *croppedImage = [image croppedImage:clipRect];
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    [croppedImage drawAtPoint:CGPointMake(0, 0)];
}

Nota:il mio ritaglio di vista NON è un discendente di UIImageView, è solo UIView con un riferimento all'immagine sottostante, dall'altro punto di vista.

"croppedImage" è una categoria UIImage e abbastanza semplice:

@implementation UIImage (Resize)
- (UIImage *)croppedImage:(CGRect)bounds {
    CGImageRef imageRef = CGImageCreateWithImageInRect([self CGImage], bounds);
    UIImage *croppedImage = [UIImage imageWithCGImage:imageRef];
    CGImageRelease(imageRef);
    return croppedImage;
}
...
@end

Ho implementato alcuni dei UIScrollViewDelegate metodi e passare attraverso le attività di scorrimento in modo che io possa mantenere il mio ritaglio di vista in sincronia.Lo zoom è passato troppo, ma come detto, non funziona come desiderato di sicurezza.

Un'Altra Nota:Io non credo che sia necessario sprecare il tempo per generare un nuovo UIImage con l'area ritagliata ogni momento in cui lo stesso dovrebbe essere possibile con

CGImageRef imageRef = CGImageCreateWithImageInRect([yourImage CGImage], bounds);
and 
CGContextDrawImage(ctx, clipRect, imageRef);

Altri suggerimenti

Il quarzo è il 'termine di marketing' per core grafico, ed è lì che si dovrebbe iniziare. Ti consigliamo di utilizzare un UIView (disegno personalizzato completo nel -drawRect :), trappola e rintracciare i suoi tocchi, e quindi disegnare il risultato. È possibile ottenere il contesto grafico corrente utilizzando UIGraphicsGetCurrentContext (). Questo dovrebbe essere sufficiente per iniziare!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top