如何在UIImage中创建透明区域?

时间:2014-01-19 21:37:38

标签: ios objective-c uiimage

我正在使用xcode为iPhone制作游戏。我有一个起始图像,我希望从中获得第二个图像,其中包含一些(四个)透明区域,例如就像这个:

enter image description here

问题在于我不知道如何实现它;我要处理原始图像并从中切割区域吗?或者我要创建一个新图像,我只放置原始图像中的可见部分? 任何建议或片段都会非常感激。

1 个答案:

答案 0 :(得分:1)

好吧,我是通过创建自定义UIView子类并使用其drawRect方法绘制部分来实现的。 例如:

- (无效)的drawRect:(

CGRect)rect
{
    [super drawRect:rect];

    CGContextRef ctx = UIGraphicsGetCurrentContext(); // get drawing context

    CGContextSaveGState(ctx); //remember current state
    CGContextClipToRect(ctx, CGRectMake(0, 0, 100, 100)); //set clipping
    CGContextDrawImage(ctx, CGRectMake(0, 0, img.size.width, img.size.height), img.CGImage);
    CGContextRestoreGState(ctx); //restore state, so the previous clipping will be canceled

    CGContextSaveGState(ctx);
    CGContextClipToRect(ctx, CGRectMake(100, 100, 100, 100));
    CGContextDrawImage(ctx, CGRectMake(0, 0, img.size.width, img.size.height), img.CGImage);
    CGContextRestoreGState(ctx);
}

这将绘制两个小的rects。在这段代码中,img是一个UIImage。

然而,这是最简单的方法,而不是最有效的 - 它需要重绘每个部分。您可能需要检查CGContextClipToRects和CGContextClip函数,以使其更加高效和灵活。