Mam prosty widok (lewa strona obrazu) i potrzebuję stworzyć jakąś nakładkę (prawa strona obrazu) do tego widoku. Ta nakładka powinna mieć trochę nieprzezroczystości, więc poniższy widok jest nadal częściowo widoczny. Co najważniejsze, ta nakładka powinna mieć okrągły otwór pośrodku, aby nie nakładała się na środek widoku (patrz rysunek poniżej).
Mogę łatwo utworzyć taki krąg:
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;
Oraz „pełną” prostokątną nakładkę, taką jak ta:
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];
Ale nie mam pojęcia, jak mogę połączyć te dwie warstwy, aby uzyskać efekt, który chcę. Ktoś? Naprawdę próbowałem wszystkiego ... Wielkie dzięki za pomoc!
moveToPoint
następnie dodaj prostokąt zaokrąglony. Sprawdź w dokumentacji metody oferowane przez UIBezierPath
.