単純なビュー(写真の左側)があり、このビューに何らかのオーバーレイ(写真の右側)を作成する必要があります。このオーバーレイにはある程度の不透明度があるはずなので、下のビューはまだ部分的に表示されています。最も重要なのは、このオーバーレイの中央に円形の穴があり、ビューの中心をオーバーレイしないようにすることです(下の図を参照)。
私はこのような円を簡単に作成できます:
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];
しかし、私はこれらの2つのレイヤーをどのように組み合わせることができるかわからないので、必要な効果を生み出します。誰でも?私は本当にすべてを試しました...助けてくれてありがとう!
moveToPoint
、四角形の四角形を追加します。が提供するメソッドについては、ドキュメントを確認してくださいUIBezierPath
。