我有一个UIImage包含一个图像,图像上有一大堆较小的图片(本质上是一个包含精灵的图像条)。我想在我的UIView的一个区域画一个精灵。
我似乎找不到将UIImage的一部分绘制到视图上的方法。有没有这样做的方法?
答案 0 :(得分:8)
我想你可能正在寻找CGImageCreateWithImageInRect()。您可以使用property of the same name从CGImage
获得UIImage
。
编辑:2014年存在的另一种选择,即2009年没有,是SpriteKit。根据您可能正在做的事情,需要精灵表,这可能很有用。
答案 1 :(得分:3)
我写了一个UIImage
类别来处理精灵表。看看这个,它可能会有所帮助http://reecon.wordpress.com/2011/11/19/uiimage-sprite-additions-objective-c/
如前所述,此类别基于CGImageCreateWithImageInRect()
,但是从单个精灵表中提取精灵的过程远远更方便和更快。
链接到git hub页面: https://github.com/r3econ/UIImage-Sprite-Additions
您也可以使用可可豆荚安装。
答案 2 :(得分:2)
是的,你确定可以使用Quartz。
这里有一个教程,向您展示如何获取UIImage并屏蔽其中的一部分。
http://iosdevelopertips.com/cocoa/how-to-mask-an-image.html
以下是该页面的代码(由于某种原因导致其失效)
- (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];
}