最佳答案
我有一个简单的视图(左侧的图片) ,我需要创建一些覆盖(右侧的图片)到这个视图。这个覆盖层应该有一些不透明度,所以下面的视图仍然是部分可见的。 最重要的是,这种覆盖应该有一个圆形孔在它的中间,所以它不覆盖的中心的看法(见下图)。
我可以很容易地创建一个这样的圆圈:
int radius = 20; //whatever
CAShapeLayer *circle = [CAShapeLayer layer];
circle.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0,radius,radius) cornerRadius:radius].CGPath;
circle.position = CGPointMake(CGRectGetMidX(view.frame)-radius,
CGRectGetMidY(view.frame)-radius);
circle.fillColor = [UIColor clearColor].CGColor;
和一个“完整的”矩形覆盖物,像这样:
CAShapeLayer *shadow = [CAShapeLayer layer];
shadow.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, view.bounds.size.width, view.bounds.size.height) cornerRadius:0].CGPath;
shadow.position = CGPointMake(0, 0);
shadow.fillColor = [UIColor grayColor].CGColor;
shadow.lineWidth = 0;
shadow.opacity = 0.5;
[view.layer addSublayer:shadow];
但是我不知道如何将这两个图层结合起来才能产生我想要的效果。有人吗?我真的什么都试过了... 非常感谢你的帮助!