J'ai une vue simple (côté gauche de l'image) et j'ai besoin de créer une sorte de superposition (côté droit de l'image) à cette vue. Cette superposition doit avoir une certaine opacité, de sorte que la vue ci-dessous est encore partiellement visible. Plus important encore, cette superposition doit avoir un trou circulaire au milieu afin qu'elle ne recouvre pas le centre de la vue (voir l'image ci-dessous).
Je peux facilement créer un cercle comme celui-ci:
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;
Et une superposition rectangulaire "complète" comme celle-ci:
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];
Mais je ne sais pas comment combiner ces deux couches pour qu'elles créent l'effet que je veux. N'importe qui? J'ai vraiment tout essayé ... Merci beaucoup pour votre aide!
moveToPoint
puis ajoutez le rect arrondi. Consultez la documentation pour les méthodes proposées par UIBezierPath
.