2016-08-08 1 views
1

스레드 here과 동일한 문제가 있습니다. 텍스트를 흰색으로 만들어서 상태 표시 줄을 보이게 할 수는 있지만 이것이 내 목표는 아닙니다. 또한 모든 탐색 모음에서와 마찬가지로 표시 줄 상단에 색상을 지정해야합니다. layoutSubviews 아래에서 뷰를 사용하여 원하는 모양을 추가하여이 작업을 수행 할 수 있었지만 UINavigationItem과 상호 작용하거나 볼 수는 없습니다. 코드 :이 결과UINavigationBar 하위 클래스의 drawRect는 상태 표시 줄을 검은 색으로 만듭니다.

- (void)drawRect:(CGRect)rect { 
[super drawRect:rect]; 
CGContextRef context = UIGraphicsGetCurrentContext(); 
[[UIColor yellowColor] setFill]; 
UIRectFill(rect); 

는 :

enter image description here

이것은의 drawRect 달성 할 수 인피부입니다 :

enter image description here

그리고 당신이 그것을 할 경우에 발생합니다 layoutSubviews :

enter image description here

앞에서 볼 수 있듯이 텍스트, 화살표는 모두 손실됩니다. 그래서 나는 drawRect 작업을 할 수있는 방법을 찾고 있습니다! 도와 주셔서 미리 감사드립니다.

navController.navigationBar.translucent = true 
navController.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default) 
navController.navigationBar.shadowImage = UIImage() 
navController.navigationBar.backgroundColor = UIColor.clearColor() 

는 스토리 보드 또는 XIB에서 뷰를 작성하고 VC의 특성을 다음에 추가 : 당신의 서브 뷰 그 후

navController.view.insertSubview(navBarView, belowSubview: (navigationController?.navigationBar)!) 

+0

3 번째 사진처럼 보이기를 원했지만 버튼이 나타나지 않는다고하셨습니까? – Tj3n

+0

@ Tj3n 그래,하지만 내가 원하는 색상이 아니야, 그렇지 않으면 틴트 컬러 속성을 사용할 것이다. 막대는 적절한 스케치 (별과 여러 색상이 들어 있음)로되어 있습니다. 뷰가 모든 보이는 요소 (버튼, 메인 스크린의 제목, 모든 것)를 차단하기 때문에 layoutSubview가 drawRect의 맨 위에서 작동하기 때문입니다. – isklikas

+0

실제로 'navigationBar' 배경, 그림자 및 색상을 숨겨서 색상을 지울 수 있습니다. 그런 다음 보이지 않는 탐색 바 아래에 맞춤보기를 추가 할 수 있습니다. 사용자 정의 탐색 바를 위해이 작업을 수행합니다. D 필요에 따라 신속하게 답변 할 수 있습니다. 꽤 쉽게 – Tj3n

답변

1

첫째로 눈에 보이지 않는 당신의 네비게이션 바 설정 는 바 버튼 뒤에 나타나야하며 사용자 정의 navBarView에서 정상적으로 작동하지만보기가 사라지면 해당 navBarView을 제거하고 navBar를 기본값으로 되돌려 야합니다.

navController.navigationBar.translucent  = false 
navController.navigationBar.shadowImage  = nil 
navController.navigationBar.setBackgroundImage(nil, forBarMetrics: .Default) 
navController.navigationBar.backgroundColor = UIColor.whiteColor() 
+0

고마워요, 이것은 많은 좌절에서 나를 구 했어요! :) – isklikas

관련 문제