2013-04-30 2 views
1

내가 UILabel의 위해 곡선 만 상위 두 모서리를 만들기 위해, 그래서 조금 탐사 후이 같은 짓을 .. UIBezierPath와 CAShapeLayer를 사용하여 IOS에서 곡선 가장자리를 만드는 것이 효율적입니까?

UIBezierPath *maskPath; 

maskPath = [UIBezierPath bezierPathWithRoundedRect:label.bounds byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerTopRight) cornerRadii:CGSizeMake(8.0, 8.0)]; 

CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init]; 
maskLayer.frame = label.bounds; 
maskLayer.path = maskPath.CGPath; 
label.layer.mask = maskLayer; 

는 어떻게해야 효율적인가요? 한 포럼에서 그들은 효율적인 목적으로 한 번 이상 이것을 사용하지 않는다고 언급했습니다. 그렇다면 어떻게해야합니까? 나는 몇몇 장소에서 필요하다. 고맙습니다.

+1

코드 위의 사람들이 잘 작동하고 있습니다. 제 질문은 효율적입니까, 그렇지 않은가요? 내 응용 프로그램이 느려 집니까? 또는 다른 단점이 있습니까? – Newbee

+0

글쎄, 한 번 여러 장소에서 그것을 할 경우 문제가되지 않습니다. 만약 당신이 그것을 반복한다면, 나는 그것이 효율적이지 않을 것이라고 생각합니다. Instruments로 앱을 시작하고 직접 보시지 않으시겠습니까? – TheBlack

답변

0

이 작업을 수행하는 것이 완벽하게 가능합니다. 비슷한 크기의 비트 맵을 만들고 약간의 커브를 그리는 것보다 리소스를 많이 사용하지 않아도됩니다. 그들이 그것을 한 번 이상 사용하지 않는다고 말하면, 물체의 수명 내에서 두 번 이상 사용하지 말아야합니다 (즉,로드 할 때 한 번만 부르십시오). 앱의 모든 라벨에이 값을 사용할 수 있습니다 (예 : initWithFrame:의 재정의). 그러면 괜찮습니다.

관련 문제