我有一个UIImage,其中包含一张图像,上面有许多小图片(本质上是包含精灵的图像条)。我想在我的UIView上绘制一个单独的精灵。
我似乎找不到一种方法只将UIImage的一部分绘制到视图上。是否有一种可以做到这一点的方法?
UIImage
中获取CGImage
。我为处理精灵图表编写了一个 UIImage
类别。看看这个,它可能会有所帮助 http://reecon.wordpress.com/2011/11/19/uiimage-sprite-additions-objective-c/
如前所述,该类别基于 CGImageCreateWithImageInRect()
,但使从单个精灵图表中提取精灵的过程变得更加便捷和更快。
链接到 git hub 页面: https://github.com/r3econ/UIImage-Sprite-Additions
您也可以使用 cocoa pods 安装。
没错,你可以使用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];
}