간단한보기 (그림의 왼쪽)가 있고이보기에 일종의 오버레이 (그림의 오른쪽)를 만들어야합니다. 이 오버레이는 약간의 불투명도를 가져야하므로 아래 뷰는 여전히 부분적으로 보입니다. 가장 중요한 것은이 오버레이의 중앙에 원형 구멍이 있어야 뷰 중앙에 오버레이되지 않습니다 (아래 그림 참조).
다음과 같이 쉽게 원을 만들 수 있습니다.
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
.