У мене простий вид (ліва частина малюнка), і мені потрібно створити якусь накладку (праву частину зображення) до цього виду. Ця накладка повинна мати деяку непрозорість, тому вид під нею все ще частково видно. Найголовніше, що ця накладка повинна мати круглий отвір посередині, щоб вона не перекривала центр зору (див. Малюнок нижче).
Я легко можу створити таке коло:
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];
Але я поняття не маю, як можна комбінувати ці два шари, щоб вони створили потрібний мені ефект. Хтось? Я спробував насправді все ... Дякую за допомогу!
moveToPoint
потім додайте округлу пряму. Перевірте документи на методи, пропоновані компанією UIBezierPath
.