题
我有一个UIImage包含一个图像,图像上有一大堆较小的图片(本质上是一个包含精灵的图像条)。我想在我的UIView的一个区域画一个精灵。
我似乎找不到将UIImage的一部分绘制到视图上的方法。有没有这样做的方法?
解决方案
我想您可能正在寻找 CGImageCreateWithImageInRect()。您可以使用 UIImage 获取 CGImage
/Reference/Reference.html#//apple_ref/occ/instp/UIImage/CGImage"rel =“nofollow noreferrer”>同名属性。
编辑:2014年存在的另一种选择,即2009年没有,是 SpriteKit 。根据您可能正在做的事情,需要精灵表,这可能很有用。
其他提示
我写了一个 UIImage
类别来处理精灵表。看看这个,它可能会有所帮助 http:// reecon.wordpress.com/2011/11/19/uiimage-sprite-additions-objective-c/
如前所述,此类别基于 CGImageCreateWithImageInRect()
,但是从单个精灵表中提取sprite的过程远远更方便和更快强>
链接到git hub页面: https://github.com/r3econ/UIImage-Sprite-Additions
您也可以使用可可豆荚安装。
是的,你确定可以使用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];
}