12

UINavigationBar의 오른쪽 위와 왼쪽 위를 둥글게 싶습니다.UINavigationBar 둥근 두 모서리

뷰 코너 반경을 변경하는 기능이 있지만 표준 UINavigationBar와 비슷한 기능을 수행 할 수 있습니까? 당신은 내가 무슨 말을하는지 알 수없는 경우

이 체크 아웃 :

감사합니다!

+0

보기 코너를 바꿀 수는 있지만 모든 구석에 영향을줍니다! –

답변

10

가장 좋은 방법은 UINavigationBar에서 drawRect를 재정의하고 사용자 지정 이미지를 사용하는 것입니다.

+0

-drawRect : iOS 5에서 호출되지 않습니다. - http://stackoverflow.com/questions/5575821/custom-nav-bar-styling-ios/6389991#6389991 –

+0

업데이트 해 주셔서 감사합니다. 나는 요즘 모두가 UIAppearance 프로토콜을 알리기를 바랍니다. –

44

다음 코드 나 (iOS5를 테스트) 작동 ... 코어 * 제품군에 대한 매우 지식이 아니에요. 다음 코드는 기본 탐색 모음의 왼쪽 위/오른쪽 모서리를 반올림합니다. 또한, 그림자를 추가합니다 :

CALayer *capa = [self.navigationController navigationBar].layer; 
[capa setShadowColor: [[UIColor blackColor] CGColor]]; 
[capa setShadowOpacity:0.85f]; 
[capa setShadowOffset: CGSizeMake(0.0f, 1.5f)]; 
[capa setShadowRadius:2.0f]; 
[capa setShouldRasterize:YES]; 


//Round 
CGRect bounds = capa.bounds; 
bounds.size.height += 10.0f; //I'm reserving enough room for the shadow 
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:bounds 
               byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerTopRight) 
                cornerRadii:CGSizeMake(10.0, 10.0)]; 

CAShapeLayer *maskLayer = [CAShapeLayer layer]; 
maskLayer.frame = bounds; 
maskLayer.path = maskPath.CGPath; 

[capa addSublayer:maskLayer]; 
capa.mask = maskLayer; 
+0

@Joze 그것은 매력처럼 작동하지만 내 UIButton 등은 작동을 멈 춥니 다. 왜? –

+0

안녕하세요. 어쩌면 button.frame.origin.y가 숨겨져있을 수도 있습니다. y 좌표 (어쩌면 +2 픽셀)를 변경하고 시도해보십시오. 어쩌면 그게 문제 야. – Joze

+1

환상적인 답변입니다! 이것은 네비게이션 막대를 실제로 멋지게 만듭니다. 다른 사람들이 읽으 려 한 빠른 문제 : Mach-O 링커 오류가 발생하면 프로젝트 설정에서 quartzcore 라이브러리를 링크해야합니다. 다시 한번 감사드립니다. @Joze! – jonstaff