2011-10-27 6 views
10

라운드 사각형있는 UIButton만큼 좋아 보이지 않습니다사용자 정의 버튼 프레임은 내가 다음과 같이 사용자 정의 버튼 프레임을 그릴려고

UIBezierPath *stroke = [UIBezierPath bezierPathWithRoundedRect:self.bounds 
                cornerRadius:RECT_CORNECR_RADIUS]; 

[stroke stroke]; 

그러나 어떤 이유로 코너 곡선은 측면보다는 사상가를 보인다. UIButton의 기본 프레임을 보면 매우 균일합니다. A는 UIButton, B는 사용자 정의 버튼입니다.

어떻게하면 UIButton처럼 만들 수있는 아이디어.

A is a UIButton, B is a custom button

답변

25

당신은 버튼의 경계를 쓰다듬어 버리고 있습니다. 이렇게하면 선의 가장자리를 중심으로 선이 그려 지므로 선 두께의 절반이 범위를 벗어나 그려지지 않습니다. 이것이 모서리에서 전체 두께 인 이유입니다. 너의 경계 사각형 (라인의 두께의 절반으로 끼워 넣음)과 그 스트로크 스트링에 CGRectInset을 사용하십시오.

+0

그게 전부 야! 이제는 모두 의미가 있습니다. CGRectInset (self.bounds, 1, 1)을 수행했으며 모두 완벽하게 작동했습니다. 감사! – Nikolozi

+0

감사합니다. 삽 입을 추가하기 전에 점선으로 된 둥근 사각형의 구석에 플레어 드 스트로크를 얻었습니다. – thomh

0

당신이 가진 문제는 아마도 안티 앨리어싱 때문이다. beizerPath를 그리기 전에 CoreGraphics의 앤티 엘리 어싱 설정을 변경하려고 할 수 있습니다.

더 쉬운 해결 방법은 CALayer 버튼과 그 cornerRadius 속성을 사용하는 것입니다. 물론

self.layer.cornerRadius = RECT_CORNER_RADIUS; 
self.layer.borderWidth = 1.0f; 
self.layer.borderColor = [UIColor blackColor].CGColor; 

이이을 작동하려면 헤더를 QuartzCore에게 프레임 워크를 가져 오기하는 것을 잊지 마세요 : self 사용자 정의 버튼의 경우는 둥근 모서리를

을 그릴 쉬울 것 (#import)