如何使UIImageView中心的区域透明

时间:2014-07-14 19:55:32

标签: ios objective-c uiimageview xcode5 core-graphics

我有一个UIImageView,我想在图像视图的中心制作一个透明的圆形区域,这样当图像传递到图像视图时,图像似乎覆盖了所有的图像视图,除了中心。

这是我目前拥有的而不是图像中的黑色圆圈,我希望看到背景。

有一个类似的问题here但我需要有人告诉我如何在代码中执行此操作,因为我真的不知道Core Graphics。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:4)

这样做:

UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(50.0, 50.0, 100.0, 100.0)];
[imageView setBackgroundColor:[UIColor redColor]];

UIBezierPath *maskPath = [UIBezierPath bezierPathWithOvalInRect:imageView.bounds];

UIBezierPath *holePath = [UIBezierPath bezierPathWithOvalInRect:CGRectInset(imageView.bounds, 35.0, 35.0)];
[maskPath appendPath:holePath];

CAShapeLayer *mask = [CAShapeLayer layer];
[mask setFillRule:kCAFillRuleEvenOdd];
mask.path = maskPath.CGPath;

[imageView.layer setMask:mask];

[self.view addSubview:imageView];

你给“洞穴路径”提供的内容越多。内圈的半径越小;)

答案 1 :(得分:0)

快捷键5

let maskPath = UIBezierPath(ovalIn: albumImageView.bounds)
    let holePath = UIBezierPath(ovalIn: albumImageView.bounds.insetBy(dx: 30,dy: 30))
    maskPath.append(holePath)
    let mask = CAShapeLayer()
    mask.fillRule = .evenOdd
    mask.path = maskPath.cgPath
    albumImageView.layer.mask = mask