Pregunta

Tengo un UIImage que contiene una imagen con un montón de imágenes más pequeñas en la imagen (esencialmente una tira de imágenes que contiene sprites). Me gustaría dibujar un solo sprite en un área de mi UIView.

Parece que no puedo encontrar una manera de dibujar solo una parte del UIImage en la vista. ¿Hay algún método que haga esto?

¿Fue útil?

Solución

Creo que puede estar buscando CGImageCreateWithImageInRect () . Puede obtener una CGImage de un UIImage con el propiedad del mismo nombre .

EDITAR: otra opción que existe en 2014, que no existía en 2009, es SpriteKit . Dependiendo de lo que esté haciendo que necesite una hoja de sprite, eso podría ser útil.

Otros consejos

Escribí una categoría UIImage para manejar hojas de sprites. Mira esto, puede ser útil http: // reecon.wordpress.com/2011/11/19/uiimage-sprite-additions-objective-c/

Como se señaló anteriormente, esta categoría se basa en CGImageCreateWithImageInRect () pero hace que el proceso de extraer sprites de una sola hoja de sprites sea mucho más conveniente y más rápido .

Enlace a la página de git hub: https://github.com/r3econ/UIImage-Sprite-Additions

También puede instalar usando vainas de cacao.

Sí, seguro que puedes con Quartz.

Aquí hay un tutorial que le muestra cómo tomar un UIImage y enmascarar una parte de él.

http://iosdevelopertips.com/cocoa/how-to -mask-an-image.html

Aquí está el código de esa página (en caso de que se caiga por alguna razón)

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

}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top