Desenhe áreas selecionadas de um UIImage
Pergunta
Eu tenho um UIImage contendo uma imagem com um monte de pequenas imagens na imagem (essencialmente uma faixa de imagens contendo sprites). Eu gostaria de desenhar um único Sprite para uma área do meu UIView.
Eu não consigo encontrar uma maneira desenhar apenas parte do UIImage para a vista. Existe um método que faz isso?
Solução
Eu acho que você pode estar à procura de CGImageCreateWithImageInRect () . Você pode obter uma CGImage
de um UIImage
com o propriedade de mesmo nome .
EDIT: outra opção que existe em 2014, que não o fez em 2009, é SpriteKit . Dependendo do que você poderia estar fazendo que precisa de uma folha de sprite, que pode ser útil.
Outras dicas
Eu escrevi uma categoria UIImage
para manusear folhas de sprite. Verificar isso, pode ser útil http: // reecon.wordpress.com/2011/11/19/uiimage-sprite-additions-objective-c/
Como observado anteriormente, esta categoria bases sobre CGImageCreateWithImageInRect()
mas torna o processo de extração de sprites de uma única folha de sprite muito mais conveniente e mais rápido .
Link para a página hub git: https://github.com/r3econ/UIImage-Sprite-Additions
Você também pode instalar usando vagens de cacau.
Sim, com certeza você pode com Quartz.
Há um tutorial aqui que mostra como tomar um UIImage e mascarar uma parte dela.
http://iosdevelopertips.com/cocoa/how-to -mask-an-image.html
Aqui está o código a partir dessa página (incase ele vai para baixo por alguma razão)
- (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];
}