2

내 앱의 다른 탐색 모음에 다른 배경색을 설정하는 방법을 찾으려고합니다. (각각 탐색 모음이있는 몇 가지보기가 있습니다). drawRect를 오버라이드 (override)하려고하지 않습니다. 앱 전반에서 전역 적으로 적용되기 때문입니다. 또한 tintcolor 속성을 사용하면 탐색 모음 항목에만 적용되므로 도움이되지 않습니다.drawRect를 재정의하지 않고 uinavigationbar 배경색을 변경하는 방법 :

self.navigationController.navigationBar.tintColor = [UIColor greenColor]; 

나는이 문제에 대한 직접적인 해결책을 찾지 못했다. 어떻게 그렇게 간단한 것이 그렇게 어렵습니까? 왜 그것의 uinavbar의 재산 이해가 안되 ...

누군가가 간단한 해결책으로 도와주세요 ... 고마워!

답변

1

하위 클래스 UINavigationBar을 덮어 쓰고 drawRect를 덮어 쓰면 다른 색상을 원하는 위치에서만 하위 클래스를 사용하십시오. (당신은 다른 색상을 많이 원한다면 서브 클래스를 초기화 할 때 색상을 전달할 수있는 메소드를 가질 수 있습니다).

+1

어디에서해야합니까? 각보기 컨트롤러 아래에? – TommyG

+0

iOS7에서 drawRect를 무시하면 문제가 발생합니다. 참조 : http://stackoverflow.com/questions/19523432/drawing-in-custom-uinavigationbar-attached-to-top –

1

self.navBar setTintColor : [UIColor greenColor]]라고 말하면 어떻게됩니까? 각보기의 viewDidLoad에. 어떤 내용의 속성이없는 전에 불평했다으로 함께 IBOutlet UINavigationBar 인터페이스 빌더

+0

이미지를 변경하지 않고 컬러를 변경합니다. 색상을 적용하려면 어떻게해야합니까? – TommyG

+0

BTW, .contents ....와 같은 것은 없습니다. – TommyG

+0

먼저 IB를 사용하지 않습니다. 둘째, 내가 그것을 쓸 때, 그것은 탐색 바 항목의 색만 변경합니다. 일반적으로 TintColor는 탐색 막대 항목의 색상 만 수정합니다. 그게 정확히 위에서 설명한 내 문제. – TommyG

6
#import <QuartzCore/QuartzCore.h> 

self.navigationController.navigationBar.layer.contents = (id)[UIImage imageNamed:@"navigationBarBackgroundImage"].CGImage; 

self.navigationController.navigationBar.tintColor = [UIColor orangeColor]; 

에서 탐색 모음에 링크로 Navbar를 선언된다. 쿼츠 프레임을 임포트해야합니다.

+0

하지만 이미지를 사용하고 싶지 않습니다 ... 어떻게 이미지없이 배경색을 설정하고 항목에 다른 색상을 사용할 수 있습니까? – TommyG

+0

정말로 코드를보기 전에 내 코드를 사용해 보셨습니까? 이것은 navigationBar의 색조 색을 설정하는 방법입니다. 먼저이 코드를 실행하여 orangeColor 또는 greenColor 중 어떤 것이 있는지 확인하십시오. –

+0

또한 self.navigationController.navigationBar.layer.contents = (id) [UIImage imageNamed : @ "navigationBarBackgroundImage"]. CGImage; 컴파일되지 않습니다. 캐스팅 오류와 같습니다. – TommyG

0

코드가 정확합니다. 네비게이션 컨트롤러를 만들 때이 위치에 놓아야합니다.

1
self.navigationController.navigationBar.backgroundColor = [UIColor greenColor]; 
self.navigationController.navigationBar.tintColor = [UIColor greenColor]; 

이 나를 위해 매우 쉽게 작업하고 있습니다.

관련 문제