iOS 7에서 탐색 막대 색상을 변경하는 방법은 무엇입니까?


213

iOS 7에서 내비게이션 바 색상을 어떻게 변경합니까?

기본적으로 Twitter Nav Bar와 같은 것을 달성하고 싶습니다 (Twitter가 업데이트되었습니다 iOS7). 탐색 모음을 a 상단에 내장했습니다 view controller. 원하는 것은 상단의 유틸리티 표시 줄과 함께 탐색 표시 줄 색상을 연한 파란색으로 변경하는 것입니다. 내에서 옵션을 찾지 못하는 것 같습니다 storyboard.



[[UINavigationBar 모양] setBarTintColor : [UIColor blackColor]]; 이 작업은 iOS 7부터 작동합니다.
Chandramani

1
이 튜토리얼을 따르십시오 appcoda.com/customize-navigation-status-bar-ios-7
Chandramani

답변:


319

tintColoriOS 7.0에서 막대 의 동작 이 변경되었습니다. 더 이상 막대의 배경에 영향을 미치지 않습니다.

설명서에서 :

barTintColor 클래스 참조

탐색 막대 배경에 적용 할 색조 색상입니다.

@property(nonatomic, retain) UIColor *barTintColor

토론
이 색상은 반투명 속성을로 설정하지 않는 한 기본적으로 반투명합니다 NO.

유효성

iOS 7.0 이상에서 사용 가능합니다.

UINavigationBar.h에서 선언

암호

NSArray *ver = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];
if ([[ver objectAtIndex:0] intValue] >= 7) {
    // iOS 7.0 or later   
    self.navigationController.navigationBar.barTintColor = [UIColor redColor];
    self.navigationController.navigationBar.translucent = NO;
}else {
    // iOS 6.1 or earlier
    self.navigationController.navigationBar.tintColor = [UIColor redColor];
}

iOS 7 UI 전환 가이드 에서 언급했듯이이를 사용하여 iOS 버전을 확인할 수도 있습니다.

if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) {
        // iOS 6.1 or earlier
        self.navigationController.navigationBar.tintColor = [UIColor redColor];
    } else {
        // iOS 7.0 or later     
        self.navigationController.navigationBar.barTintColor = [UIColor redColor];
        self.navigationController.navigationBar.translucent = NO;
    }

xib를 사용하여 편집

여기에 이미지 설명을 입력하십시오


3
하지만이 코드를 어디에 둘 수 있습니까 ?? 이 hahah에 아주 새로운 메신저입니다. 앱 대리자 내에 배치했는데 실제로 많은 일을하지 않는 것 같습니다. 그래도 괜찮습니다.
Patricio Guerra

1
inside viewController
Rajneesh071

1
viewController의 viewDidLoad에 넣을 것입니다.
HalR

2
if (floor (NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) 전환 가이드의 apple에서 말한 것처럼 developer.apple.com/library/ios/documentation/userexperience/…
David Thompson

1
또한 ([self.navigationController.navigationBar respondsToSelector : @selector (setBarTintColor :)]) vs 버전 번호를 사용하여 barTintColor를 설정할 수 있는지 확인할 수 있습니다.
SimpsOff

129

오래된 트위터의 Nav Bar 모양, 흰색 배경의 파란색 배경을 얻기 위해 원래 질문을 한 것은 Xcode의 Interface Builder를 사용하면 매우 쉽습니다.

  • 문서 개요를 사용하여 탐색 모음을 선택하십시오.
  • 속성 관리자의 탐색 모음 그룹에서 스타일을 기본값에서 검은 색으로 변경합니다. 탐색 및 상태 표시 줄의 배경색이 검은 색으로 바뀌고 텍스트가 흰색으로 바뀝니다. 따라서 앱이 실행 중일 때 상태 표시 줄의 배터리 및 기타 아이콘과 텍스트가 흰색으로 표시됩니다.
  • 동일한 탐색 막대 그룹에서 막대 색조를 원하는 색상으로 변경하십시오.
  • 탐색 막대에 막대 단추 항목이있는 경우 여전히 텍스트가 기본 파란색으로 표시되므로 속성 관리자,보기 그룹에서 색조를 흰색으로 변경하십시오.

원하는 것을 얻을 수 있습니다. 다음은 변경 위치를보다 쉽게 ​​확인할 수있는 스크린 샷입니다.

iOS 시뮬레이터의 결과를 포함하여 필요한 변경을 수행 할 수있는 위치

막대 색조 만 변경해도 탐색 막대 또는 상태 표시 줄의 텍스트 색상은 변경되지 않습니다. 스타일도 변경해야합니다.


iOS 9에서 검은 색을 선택하면 더 이상 사용되지 않으며 업데이트 된 답변이있을 가능성이 있습니다
Rob85

@ Rob85 지금은 Xcode 앞에 있지 않지만 Xcode 7 (iOS 9 포함)이 릴리스되었을 때 이러한 지침이 여전히 최신 상태인지 확인했습니다. 탐색 모음이 선택되어 있는지 확인하십시오. 검은 색 스타일은 탐색 모음의 속성 관리자에 있어야합니다.
alondono

2
Rob85 I의 한 애플의 개발자 웹 사이트를 확인하고, 스타일 @ DefaultBlack아이폰 OS 9에서 여전히 사용할 수있는 사용되지 않는 사람은 BlackOpaqueBlackTranslucent의 조합에 의해 대체 된, Black스타일과 반투명 틱 박스. Apple 개발자 웹 사이트의
UIBarStyle

죄송합니다 @ alondono 당신은 절대적으로 정확합니다. 내비게이션 컨트롤러의 탐색 표시 줄을 문서 개요가 아닌 이유를 클릭하여 볼 수 없었습니다. 더 이상 사용되지 않는 검은 색은 시뮬레이션 된 통계-> 상태 표시 줄에있었습니다. 답장을 보내 주셔서 감사합니다
Rob85

@ Rob85 쿨! 알려 줘서 고마워.
alondono

76
self.navigationBar.barTintColor = [UIColor blueColor];
self.navigationBar.tintColor = [UIColor whiteColor];
self.navigationBar.translucent = NO;

// *barTintColor* sets the background color
// *tintColor* sets the buttons color

4
그리고이 코드를 정확히 어디에 넣을 수 있습니까 ?? 죄송가 hahah 초보자 질문
파트 리 게라

1
내비게이션 제어기 (보이드)의 viewDidLoad 방법 - 코드가 배치 될 수있다
pNre

2
iOS 9에서 barTintColor를 검은 색으로 설정하면 시간, 장치 이름 및 배터리가 너무 검게 표시되어 보이지 않습니다. 이를 방지하려면 barTintColor를 사용하는 대신 self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
TheJeff

46

탐색 기반 앱에서 코드를 AppDelegate에 넣을 수 있습니다. 더 자세한 코드는 다음과 같습니다.

// Navigation bar appearance (background and title)

[[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor titleColor], NSForegroundColorAttributeName, [UIFont fontWithName:@"FontNAme" size:titleSize], NSFontAttributeName, nil]];

[[UINavigationBar appearance] setTintColor:[UIColor barColor]];

// Navigation bar buttons appearance

[[UIBarButtonItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor textBarColor], NSForegroundColorAttributeName, shadowColor, NSShadowAttributeName, [UIFont fontWithName:@"FontName" size:titleSize], NSFontAttributeName, nil];

6
[[UINavigationBar appearance] setBarTintColor:[UIColor barColor]];iOS 7에 추가
Samin

24

에서 다음 viewDidLoad을 설정하십시오.

    self.navigationController.navigationBar.barTintColor = [UIColor blueColor];

blueColor원하는 색상으로 ( )을 변경하십시오 .


18

빠른 변경 탐색 모음 색상 :

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

제목 글꼴, 크기, 색상 변경 :

self.title = "title"
self.navigationController?.navigationBar.titleTextAttributes = [
        NSAttributedString.Key.foregroundColor : UIColor.white,
        NSAttributedString.Key.font : UIFont(name: "Futura", size: 30)!
    ]

14

iOS 7에서는 -barTintColor 속성을 사용해야합니다.

navController.navigationBar.barTintColor = [UIColor barColor];

13

16 진 코드를 사용하려는 경우 가장 좋은 방법은 다음과 같습니다.

먼저 이것을 수업 상단에 정의하십시오.

#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]

그런 다음 "application didFinishLaunchingWithOptions"안에 다음을 입력하십시오.

[[UINavigationBar appearance] setBarTintColor:UIColorFromRGB(0x00b0f0)];

00b0f0 대신 16 진수 코드를 입력하십시오.


1
[UINavigationBar 모양]은 매우 도움이되었습니다.
Ken

11

ios6 및 ios7을 지원 해야하는 경우 UIViewController 에서이를 사용하여 특정 밝은 파란색을 얻습니다 .

- (void)viewDidLoad {
    [super viewDidLoad];
    NSArray *ver = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];
    if ([[ver objectAtIndex:0] intValue] >= 7) {
        self.navigationController.navigationBar.barTintColor = [UIColor colorWithRed:89/255.0f green:174/255.0f blue:235/255.0f alpha:1.0f];
        self.navigationController.navigationBar.translucent = NO;
    }else{
        self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:89/255.0f green:174/255.0f blue:235/255.0f alpha:1.0f];
    }
}

3
iOS 7에서 -self.navigationController.navigationBar.barTintColor는 막대 색상이고 -self.navigationController.navigationBar.tintColor는 버튼 텍스트 색상입니다 (뒤로, 완료 됨).
IgniteCoders 12

10

실제로 내가 본 답변보다 쉽습니다.

1) Just make sure you select the navigation bar on the Navigation control. 
2) Select the color you want in the bar tint.
3) You have other options too, and/or individually on each view (just play with it).

나는 이것이 누군가를 돕기를 바랍니다. 내가 본 답변이 마음에 들지 않았습니다. 코드를 최대한 깨끗하게 유지하고 싶습니다. 프로그래밍 방식으로하는 것이 잘못되었다고 말하는 것은 아니지만 나와 같은 사람들이 있습니다 .... 이것은 너희들을위한 것입니다. 탐색 모음의 색상 변경


고마워, 나는 몇 달 전에 놀면서 바뀌었고 어떻게 그것을 다시 바꿀 수 있는지 알 수 없었습니다!
대칭

문제 없습니다, 누군가를 도울 수있어서 기쁩니다
pqsk

이것이 가장 정답이라고 생각합니다! Thx
Ispas Claudiu

문제 없어요. 도움이 되셨
다니

5

Rajneesh071의 코드를 완성하기 위해 기본 동작이 iOS 6에서 7로 변경되었으므로 탐색 모음의 제목 색상 및 원하는 경우 글꼴을 설정할 수도 있습니다.

NSArray *ver = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];
if ([[ver objectAtIndex:0] intValue] >= 7)
{
    self.navigationController.navigationBar.barTintColor = [UIColor blackColor];
    self.navigationController.navigationBar.translucent = NO;
    NSMutableDictionary *textAttributes = [[NSMutableDictionary alloc] initWithDictionary:mainNavController.navigationBar.titleTextAttributes];
    [textAttributes setValue:[UIColor whiteColor] forKey:UITextAttributeTextColor];
    self.navigationController.navigationBar.titleTextAttributes = textAttributes;
}
else
{
    self.navigationController.navigationBar.tintColor = [UIColor blackColor];
}

5

귀하 ViewContorller 또는 귀하의AppDelegate

if([[[UIDevice currentDevice] systemVersion] floatValue] < 7.0)
{
    //This is For iOS6
    [self.navigationController.navigationBar setTintColor:[UIColor yellowColor]];
}
else
{
    //This is For iOS7
    [self.navigationController.navigationBar setBarTintColor:[UIColor yellowColor]];
}

4
//You could place this code into viewDidLoad
- (void)viewDidLoad
{
    [super viewDidLoad];
    self.navigationController.navigationBar.tintColor = [UIColor redColor];
    //change the nav bar colour
    self.navigationController.view.backgroundColor = [UIColor redColor];
    //change the background colour
    self.navigationController.navigationBar.translucent = NO;
 }   
//Or you can place it into viewDidAppear
- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:(BOOL)animated];
    self.navigationController.navigationBar.tintColor = [UIColor redColor];
    //change the nav bar colour
    self.navigationController.view.backgroundColor = [UIColor redColor];
    //change the background colour
    self.navigationController.navigationBar.translucent = NO;
}

4

탐색 기반 응용 프로그램에서 색상을 변경할 수 있습니다

NSArray *ver = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];
if ([[ver objectAtIndex:0] intValue] >= 7) {
    self.navigationController.navigationBar.barTintColor = [UIColor colorWithRed:19.0/255.0 green:86.0/255.0 blue:138.0/255.0 alpha:1];
    self.navigationController.navigationBar.translucent = NO;
} else {
    self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:19.0/255.0 green:86.0/255.0 blue:138.0/255.0 alpha:1];
}

1
iOS7에서 tintColor 속성을 변경해도 더 이상 막대 배경색을 변경해도 효과가 없습니다. iOS7에 색조 색상은 등 BarButtonItems의 텍스트 색상에 영향을 미치는
파스칼 바이엘

4
#define _kisiOS7 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)


  if (_kisiOS7)
    {
        [[UINavigationBar appearance] setBarTintColor:[UIcolor redcolor]];
    }
    else
    {
        [[UINavigationBar appearance] setBackgroundColor:[UIcolor blackcolor]];
        [[UINavigationBar appearance] setTintColor:[UIcolor graycolor]];
    }

3

이 질문과 답변이 도움이됩니다. 그들과 함께 나는 navigationBar흰색 제목과 버튼 텍스트로 원하는 진한 파란색을 설정할 수있었습니다 .

그러나 시계, 반송파, 신호 강도 등을 흰색으로 변경해야했습니다. 검은 색은 진한 파란색과 충분히 대조되지 않았습니다.

나는 이전의 대답 중 하나에 해당 솔루션을 간과 할 수 있습니다,하지만 난 내 최상위이 줄을 추가하여 그 변화를 만들 수 있었다 viewControllerviewDidLoad:

[self.navigationController.navigationBar setBarStyle:UIStatusBarStyleLightContent];

UIStatusBarStyleLightContent작동하지만 것이 올바른 열거 것 setBarStyle:입니다UIBarStyleBlack
콜린 알렌

3
- (void)viewDidLoad
{
    [super viewDidLoad];

    self.navigationController.navigationBar.barTintColor = [UIColor blueColor];
}

3

색깔을 위해 :

[[UINavigationBar appearance] setBarTintColor:[UIColor blackColor]];

이미지

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigationBar_320X44.png"] forBarMetrics:UIBarMetricsDefault];
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.