我正在尝试使用iPhone相机胶卷中的图像为自定义样式UIButton创建图像。该按钮具有圆形背景,并有效地显示为圆形。现在,我需要在按钮中间添加一个图像,该图像也会显示为圆形。

如何切割方形UIImage使其在圆形区域之外具有透明性?

如果涉及遮罩,我是否需要预渲染遮罩,或者可以以编程方式创建一个遮罩(例如圆圈)?

谢谢!

最佳答案

是的,您可以使用CoreGraphics动态绘制蒙版。
然后,您可以创建遮罩的图像。

屏蔽示例:

- (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 maskedImageRef = CGImageCreateWithMask([image CGImage], mask);
  UIImage *maskedImage = [UIImage imageWithCGImage:maskedImageRef];
  CGImageRelease(maskedImageRef);
  CGImageRelease(mask);
  return maskedImage;
}

07-27 15:49