透明な穴が開いたCALayer
単純なビュー(写真の左側)があり、このビューに何らかのオーバーレイ(写真の右側)を作成する必要があります。このオーバーレイにはある程度の不透明度があるはずなので、下のビューはまだ部分的に表示されています。最も重要なのは、このオーバーレイの中央に円形の穴があり、ビューの中心をオーバーレイしないようにすることです(下の図を参照)。 私はこのような円を簡単に作成できます: 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 = …