AppDelegate에서 UINavigationBar 배경색을 변경하는 방법


90

UINavigationBar배경 이미지 를 변경하는 방법을 알고 있습니다.

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"nabbar"] forBarMetrics:UIBarMetricsDefault];

바를 각각 다른 색상으로 설정하는 방법을 알고 있습니다 Views. ..... 이제 이미지사용하지 않고 배경색을 app delegate. 각 뷰에서 매번 설정하고 싶지 않으며 CGRect.

시도 [[UINavigationBar appearance] setBackgroundColor:[UIColor colorWithRed:33/255.0 green:34/255.0 blue:36/255.0 alpha:1.0]];했지만 작동하지 않으며 앱 대리자에서 작동하는 코드를 찾을 수 없습니다.

누구든지 올바른 방향으로 나를 가리킬 수 있습니까?

답변:


202

당신이 사용할 수있는 [[UINavigationBar appearance] setTintColor:myColor];

iOS 7부터 [[UINavigationBar appearance] setBarTintColor:myColor];[[UINavigationBar appearance] setTranslucent:NO].

[[UINavigationBar appearance] setBarTintColor:myColor];
[[UINavigationBar appearance] setTranslucent:NO];

감사합니다. 상단에서 나오는 흰색 기본 그라디언트를 제거하여 단색으로 만드는 방법을 알고 있습니까?
Jonathan Thurft

1
으로 tintColor기울기가 유지됩니다. 이 그래디언트를 원하지 않는 경우 UINavigationBar를 서브 클래 싱하거나 모양에 대한 UIImage를 만들어야합니다.
Seb Thiebaud 2013 년

59
작동하지 않았다 아이폰 OS 7 일에, 나는 사용했다navigationBar.barTintColor = myColor;
후안 드 라 토레

4
translucent속성은 iOS 6 및 iOS 7에서 UIAppearance를 사용하여 설정할 수 없습니다. 따라서 [[UINavigationBar appearance] setTranslucent:NO]앱이 NSInvalidArgumentException오류 와 함께 충돌합니다 . [self.navigationController.navigationBar setTranslucent:NO]IB를 사용하여 투명도를 사용 하거나 선택 취소합니다.
Sam

1
Swift 버전 : UINavigationBar.appearance().barTintColor = myColor UINavigationBar.appearance().isTranslucent = false
fl034

103

색조가 아닌 배경색을 변경하려면 다음 코드가 작동합니다.

[self.navigationController.navigationBar setBarTintColor:[UIColor greenColor]];
[self.navigationController.navigationBar setTranslucent:NO];

3
이것은 허용되는 대답이어야하며 iOS7에서 완벽하게 작동합니다.
joshuahornby10 2010 년

iOS 7에 대한 정답입니다. Working for me.
LondonGuy 2014

반투명은이 작업을 수행하기위한 요구 사항입니다. 받아 들여진 대답은 그것을 포함하지 않기 때문에 이것은 받아 들여진 대답이어야합니다.
Tristan Warner-Smith

3
명확히하기 위해 허용되는 대답은 AppDelegate에 대한 것이며 이것은 View Controller 내부에 대한 것입니다.
Dean

@Dean이 맞습니다. 수락 된 답변은 새로 생성 된에 적용되며이 답변은를 UIViewControllers호출 할 때마다 효과를 표시합니다.
aramusss 2015

18

iOS 7에서이 작업을 수행합니다.

[[UINavigationBar appearance] setBarTintColor:myColor];

15

신속한 구문 :

    UINavigationBar.appearance().barTintColor = UIColor.whiteColor() //changes the Bar Tint Color

AppDelegate didFinishLaunchingWithOptions에 넣었고 앱 전체에서 지속됩니다.


8

스위프트 :

self.navigationController?.navigationBar.barTintColor = UIColor.red
self.navigationController?.navigationBar.isTranslucent = false

6

Xcode 6.3.1로 쉽게 할 수 있습니다. 문서 개요에서 NavigationBar를 선택합니다. Attributes Inspector를 선택합니다. 반투명을 선택 취소합니다. Bar Tint를 원하는 색상으로 설정합니다. 끝난!


감사합니다, 나는 ObjC 및 신속한에서이 작업을 수행하는 방법에 대한 참조를 많이 찾았지만 아무도 IB에서 사용 가능한 언급

3

다른 답변에서 언급했듯이을 사용할 수 setTintColor:있지만 단색을 원하며 색조 색상 AFAIK를 설정할 수 없습니다.

해결책은 프로그래밍 방식으로 이미지를 만들고 .NET을 통해 모든 탐색 모음의 배경 이미지로 해당 이미지를 설정하는 것 UIAppearance입니다. 이미지 크기에 관해서는 1x1 픽셀 이미지가 작동하는지 또는 정확한 크기의 내비게이션 막대가 필요한지 잘 모르겠습니다. 이 질문 의 두 번째 답변 에서 이미지를 만드는 방법을 확인하세요.

조언으로, 나는 이러한 유형의 것들로 앱 델리게이트를 "오버로드"하고 싶지 않습니다. 내가하는 경향이있는 것은 내가 원하는 모든 UIAppearance 항목을 설정하는 AppearanceConfiguration하나의 공용 메서드 configureAppearance로 명명 된 클래스를 만든 다음 앱 대리자에서 해당 메서드를 호출하는 것입니다.


2

뷰 컨트롤러에서이 코드를 사용하여 UINavigation 배경색을 설정할 수 있습니다.

self.navigationController.navigationBar.backgroundColor = [UIColor colorWithRed:10.0f/255.0f green:30.0f/255.0f blue:200.0f/255.0f alpha:1.0f];

2

Swift 4.2 및 Xcode 10.1에서

AppDelegate에서 전체 프로젝트로 직접 탐색 모음 색상을 변경할 수 있습니다.

에서 didFinishLaunchingWithOptions launchOptions:코드의 라인 아래 쓰기

UINavigationBar.appearance().tintColor = UIColor.white
UINavigationBar.appearance().barTintColor = UIColor(red: 2/255, green: 96/255, blue: 130/255, alpha: 1.0)

여기

tintColor 는 뒤로 버튼, 메뉴 라인 이미지 등 배경 이미지를 설정하기위한 것입니다. (아래 왼쪽 및 오른쪽 메뉴 이미지 참조)

barTintColor 는 탐색 모음 배경색입니다.

특정 뷰 컨트롤러 탐색 모음 색상을 설정하려면 아래 코드를 작성하십시오. viewDidLoad()

//Add navigation bar colour
navigationController?.navigationBar.barTintColor = UIColor(red: 2/255, green: 96/255, blue: 130/255, alpha: 1.0)
navigationController?.navigationBar.tintColor = UIColor.white

여기에 이미지 설명 입력


-1

색상 코드가 여기서 문제입니다. 195/255를 사용하는 대신 0.7647 또는 195.f / 255.f를 사용하십시오. 문제는 플로트 변환이 제대로 작동하지 않는 것입니다. 정확한 float 값을 사용해보십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.