Disegna le aree selezionate di un UIImage
Domanda
Ho un UIImage che contiene un'immagine con un intero gruppo di immagini più piccole sull'immagine (essenzialmente una striscia di immagine contenente sprite). Vorrei disegnare un singolo sprite su un'area del mio UIView.
Non riesco a trovare un modo per disegnare solo una parte di UIImage nella vista. Esiste un metodo per farlo?
Soluzione
Penso che potresti cercare CGImageCreateWithImageInRect () . Puoi ottenere un CGImage
da un UIImage
con proprietà con lo stesso nome .
EDIT: un'altra opzione esistente nel 2014, che non è stata nel 2009, è SpriteKit . A seconda di cosa potresti fare che necessita di un foglio sprite, potrebbe essere utile.
Altri suggerimenti
Ho scritto una categoria UIImage
per la gestione dei fogli sprite. Dai un'occhiata, potrebbe essere utile http: // reecon.wordpress.com/2011/11/19/uiimage-sprite-additions-objective-c/
Come notato in precedenza, questa categoria si basa su CGImageCreateWithImageInRect ()
ma rende il processo di estrazione degli sprite da un singolo foglio sprite più conveniente e più veloce .
Link alla pagina dell'hub git: https://github.com/r3econ/UIImage-Sprite-Additions
Puoi anche installare usando i baccelli di cacao.
Sì, puoi sicuramente farlo con Quartz.
C'è un tutorial qui che ti mostra come prendere un UIImage e mascherarne una parte.
http://iosdevelopertips.com/cocoa/how-to -mask-an-image.html
Ecco il codice da quella pagina (nel caso in cui scenda per qualche motivo)
- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage {
CGImageRef maskRef = maskImage.CGImage;
CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef),
CGImageGetHeight(maskRef),
CGImageGetBitsPerComponent(maskRef),
CGImageGetBitsPerPixel(maskRef),
CGImageGetBytesPerRow(maskRef),
CGImageGetDataProvider(maskRef), NULL, false);
CGImageRef masked = CGImageCreateWithMask([image CGImage], mask);
return [UIImage imageWithCGImage:masked];
}