在iOS中将图像掩盖为圆形

时间:2012-02-01 14:06:51

标签: objective-c ios xcode core-graphics

我知道有很多关于面具的问题,但对他们的答案并没有帮助我(只是部分)。

我需要做我的形象。我创建了mask.png并在代码中使用它:

- (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);
UIImage* maskedImage = [UIImage imageWithCGImage:masked];

CGImageRelease(masked);
CGImageRelease(mask);
return maskedImage;
}

一切都很棒,每个人都很开心。但是当我开始在设备上测试这个方法时,我发现它不是掩盖我的图像(在模拟器中一切正常)。我如何掩饰我的形象?

P.S。暂时我用我的面具将view.layes.mask作为图层。这个变种正在设备上工作。可以通过任何方式从这一层中保存回合吗?

1 个答案:

答案 0 :(得分:1)

如果您需要的只是圆形图像视图,则不需要执行所有这些操作。

UIImageView * myimageview = [[UIImageView alloc]init];
myimageview.layer.cornerRadius = myimageview.frame.size.height;
myimageview.layer.masksToBounds = true;

使用上面的代码并将任何图像设置为该imageview,您将获得圆形图像视图。这里你没有使图像成为圆形,而是图像视图。