我有一个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];

}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top