iPhone 탐색 막대 제목 텍스트 색상


283

iOS 탐색 막대 제목 색상이 기본적으로 흰색 인 것 같습니다. 다른 색으로 바꾸는 방법이 있습니까?

navigationItem.titleView이미지를 사용한 접근 방식을 알고 있습니다. 내 디자인 기술이 제한적이고 표준 광택을 얻지 못했기 때문에 텍스트 색상을 변경하는 것을 선호합니다.

모든 통찰력은 대단히 감사하겠습니다.


방금 Steven Fisher의 답변을 기반으로 탐색 모음에 사용자 정의 색상 제목을 추가하는 과정을 단순화하는 코드를 게시했습니다. 제목 변경도 지원합니다. 찾아보다! 실망시키지 않을 것입니다.
Erik B

1
Erik : 나는 당신의 대답에 대해 메모를했습니다. 코드로 답변을 업데이트하고 싶지만 투표를 원하지 않습니다. 영리한 솔루션, btw.
Steven Fisher

답변:


423

현대적인 접근

내비게이션 컨트롤러의 루트보기가로드 될 때 전체 내비게이션 컨트롤러에 대한 현대적인 방법입니다.

[self.navigationController.navigationBar setTitleTextAttributes:
   @{NSForegroundColorAttributeName:[UIColor yellowColor]}];

그러나 이것은 후속보기에는 영향을 미치지 않습니다.

고전적인 접근

보기 컨트롤러 당 이전 방식 (이 상수는 iOS 6 용이지만 iOS 7 모양에서보기 컨트롤러별로 수행하려는 경우 동일한 접근 방법을 원하지만 다른 상수를 사용합니다) :

당신은을 사용할 필요 UILabel는 AS titleViewnavigationItem.

라벨은 :

  • 배경색이 깨끗해야합니다 ( label.backgroundColor = [UIColor clearColor]).
  • 굵은 체 20pt 시스템 글꼴 ( label.font = [UIFont boldSystemFontOfSize: 20.0f])을 사용하십시오 .
  • 50 % 알파 ( label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5]) 의 검은 그림자가 있습니다.
  • 당신은 중심뿐만 아니라 (에 텍스트 정렬을 설정할 수 있습니다 label.textAlignment = NSTextAlignmentCenter( UITextAlignmentCenter이전의 SDK)입니다.

라벨 텍스트 색상을 원하는 색상으로 설정하십시오. 텍스트가 그림자로 혼합되지 않는 색상을 원하므로 읽기가 어렵습니다.

나는 시행 착오를 통해이 문제를 해결했지만, 내가 생각해 낸 값은 궁극적으로 Apple이 선택한 것이 아닌 너무 간단합니다. :)

당신이 확인하고 싶은 경우,이 코드를 드롭 initWithNibName:bundle:PageThreeViewController.m의 애플 Navbar의 샘플 . 텍스트가 노란색 레이블로 바뀝니다. 색상을 제외하고 Apple 코드에서 생성 한 원본과 구별 할 수없는 것이어야합니다.

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self)
    {
        // this will appear as the title in the navigation bar
        UILabel *label = [[[UILabel alloc] initWithFrame:CGRectZero] autorelease];
        label.backgroundColor = [UIColor clearColor];
        label.font = [UIFont boldSystemFontOfSize:20.0];
        label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
        label.textAlignment = NSTextAlignmentCenter;
                           // ^-Use UITextAlignmentCenter for older SDKs.
        label.textColor = [UIColor yellowColor]; // change this color
        self.navigationItem.titleView = label;
        label.text = NSLocalizedString(@"PageThreeTitle", @"");
        [label sizeToFit];
    }

    return self;
}

편집 : 또한 아래의 Erik B의 답변을 읽으십시오. 내 코드는 효과를 보여 주지만 그의 코드는 기존 뷰 컨트롤러에서이를 간단하게 배치 할 수있는 방법을 제공합니다.


2
를 사용하여 레이블 프레임을 텍스트 크기로 설정 sizeWithFont:하면 표준 레이블의 자동 정렬 동작이 마술처럼 적용됩니다.
grahamparks

1
그러나 sizeToFit를 사용하면 자동 잘림이 손실됩니다.
Steven Fisher

3
참고 : 이것은 사용자 정의 제목을 설정하는 오래된 방법입니다. Erik B의 답변을 읽는 것이 좋습니다.
Elia Palme

1
sizeToFit가 작동하는지 확인 했으므로 답변이 업데이트되었습니다. 또한 Erik B의 답변을 읽는 메모를 추가했습니다.
Steven Fisher

1
label.textAlignment = UI6.0부터 UITextAlignmentCenter가 더 이상 사용되지 않습니다. 대신 NSTextAlignmentCenter를 사용하십시오
Jasper

226

나는 이것이 꽤 오래된 스레드라는 것을 알고 있지만 iOS 5가 타이틀 속성을 설정하기 위해 새로운 속성을 제공한다는 것을 새로운 사용자에게 아는 것이 유용 할 것이라고 생각합니다.

UINavigationBar setTitleTextAttributes를 사용하여 글꼴, 색상, 오프셋 및 그림자 색상을 설정할 수 있습니다 .

또한 UINavigationBars응용 프로그램 전체 에서 동일한 기본 UINavigationBar의 제목 텍스트 속성을 설정할 수 있습니다 .

예를 들면 다음과 같습니다.

NSDictionary *navbarTitleTextAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
                                            [UIColor whiteColor],UITextAttributeTextColor, 
                                            [UIColor blackColor], UITextAttributeTextShadowColor, 
                                            [NSValue valueWithUIOffset:UIOffsetMake(-1, 0)], UITextAttributeTextShadowOffset, nil];

[[UINavigationBar appearance] setTitleTextAttributes:navbarTitleTextAttributes];

11
'UITextAttributeTextColor'는 아이폰 OS (7) 핵심은 'NSForegroundColorAttributeName'아이폰 OS 7에서 지원되지 않습니다
켈러

1
이렇게하면 일반적으로 원하는 모든 탐색 모음이 변경됩니다.
Ash

1
이것을 정답으로 표시하십시오. 위의 UILabel 방법은 이러한 방법으로 필요하지 않습니다.
Mic Fok

180

iOS 5에서는 다음과 같은 방법으로 navigationBar 제목 색상을 변경할 수 있습니다.

navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor yellowColor]};

8
@BartSimpson 동의합니다! iOS 7의 경우로 업데이트 UITextAttributeTextColor하십시오 NSForegroundColorAttributeName. 매력처럼 작동합니다!
John Erck

이 작품! 내가 이해하고 싶은 것은 어떻게?! 'NSString UIKit 추가 참조'에 언급 된 '텍스트 속성 사전 키'에 언급 된 사전 정의 된 키 세트가있는 사전을 제외한 titleTextAttributes. 언급 한 키를 어떻게 사용합니까?
AceN

... 작동 중이므로 '기본'색조를 어떻게 얻습니까?
AceN

설정 self.navigationController.navigationBar.tintColor이 작동하지 않았습니다. 그렇습니다.
JRam13

127

Steven Fisher의 답변을 바탕으로 다음 코드를 작성했습니다.

- (void)setTitle:(NSString *)title
{
    [super setTitle:title];
    UILabel *titleView = (UILabel *)self.navigationItem.titleView;
    if (!titleView) {
        titleView = [[UILabel alloc] initWithFrame:CGRectZero];
        titleView.backgroundColor = [UIColor clearColor];
        titleView.font = [UIFont boldSystemFontOfSize:20.0];
        titleView.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];

        titleView.textColor = [UIColor yellowColor]; // Change to desired color

        self.navigationItem.titleView = titleView;
        [titleView release];
    }
    titleView.text = title;
    [titleView sizeToFit];
}

이 코드의 장점은 프레임을 올바르게 처리하는 것 외에도 컨트롤러의 제목을 변경하면 사용자 지정 제목보기도 업데이트된다는 것입니다. 수동으로 업데이트 할 필요가 없습니다.

또 다른 큰 장점은 커스텀 타이틀 색상을 활성화하는 것이 정말 간단하다는 것입니다. 이 방법을 컨트롤러에 추가하기 만하면됩니다.


3
나는 이것이 최선의 해결책이라는 데 동의합니다. sizeWithFont를 사용할 필요가 없으며 setTitle 메서드를 재정의한다는 아이디어가 마음에 듭니다.
엘리아 팔메

@ Sr.Richie 사용자 지정 탐색 컨트롤러에 코드를 넣지 않아야합니다. 제목의 색상을 변경해야하는 모든 뷰 컨트롤러에 배치해야합니다. 당신은 아마 맞춤형 네비게이션 컨트롤러를 원하지 않을 것입니다.
Erik B

나를 위해 작동하지 않습니다. [UINavigationBar appearance] 메서드를 사용했기 때문이라고 생각합니다. (labeltitleView가 항상 nil이기 때문에 작동하지 않습니다)
Matej

1
iOS5 이상인 경우 아래에서 빼기의 대답을 읽어보십시오. 잘 작동하고 예약을 유지하는 하나의 라이너가 있습니다.
algal

self.title = @ "우리의 문자열"을 추가해야합니다. viewDidLoad. 그런 다음 위의 코드 만 작동합니다.
Hari1251

40

iOS 7에서 위의 제안 중 대부분은 더 이상 사용되지 않습니다.

NSDictionary *textAttributes = [NSDictionary dictionaryWithObjectsAndKeys: 
                               [UIColor whiteColor],NSForegroundColorAttributeName, 
                               [UIColor whiteColor],NSBackgroundColorAttributeName,nil];

self.navigationController.navigationBar.titleTextAttributes = textAttributes;
self.title = @"Title of the Page";

또한 설정할 수있는 다양한 텍스트 속성에 대해 NSAttributedString.h를 확인하십시오.


38

iOS 7 및 8에서는 제목의 색상을 녹색으로 변경하도록 할 수 있습니다

self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObject:[UIColor greenColor] forKey:NSForegroundColorAttributeName];

6
스위프트 :self.navigationController!.navigationBar.titleTextAttributes = NSDictionary(object: UIColor.whiteColor(), forKey: NSForegroundColorAttributeName) as [NSObject : AnyObject]
바이런 Coetsee

@ByronCoetsee Swift 2로 업데이트 한 후 다음 오류가 발생합니다. '[NSObject : AnyObject]'유형의 값을 '[String : AnyObject]'유형의 값에 할당 할 수 없습니다?
Jorge Casariego

2
스위프트 2.0에서 훨씬 더 쉬움self.navigationController!.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]
Kevin DiTraglia

24

질문을 최신 상태로 유지하기 위해 Alex RR 솔루션을 추가 하지만 Swift 에서는 추가하겠습니다 .

self.navigationController.navigationBar.barTintColor = .blueColor()
self.navigationController.navigationBar.tintColor = .whiteColor()
self.navigationController.navigationBar.titleTextAttributes = [
    NSForegroundColorAttributeName : UIColor.whiteColor()
]

결과는 다음과 같습니다.

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


흠, 아마도 Swift 2.0에서는 작동하지 않을 것입니다. 다시 확인하겠습니다. 하지만 침략 할 필요는 없습니다.
Michal

미칼 미안, 나는 그것을 농담으로 생각하고 있었다! 공격적인 것이 아닙니다! 나를 위해 일한 것은 다음과 같습니다. self.navigationController! .navigationBar.titleTextAttributes = NSDictionary (object : UIColor.whiteColor (), forKey : NSForegroundColorAttributeName) as [NSObject : AnyObject]
Radu

다음 줄을 추가하십시오. UINavigationBar.appearance (). barStyle = UIBarStyle.Black이 줄 전에 : UINavigationBar.appearance (). tintColor = UIColor.whiteColor () tintColor를 작동 시키려면!
triiiiista

2
Swift 4.0 : self.navigationController? .navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor : UIColor.white]
Abhi Muktheeswarar

14

방법 1 , IB로 설정하십시오.

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

방법 2 , 한 줄의 코드 :

navigationController?.navigationBar.barTintColor = UIColor.blackColor()

방법 2가 작동하지 않습니다. 함께 작동 titleTextAttributes
Vyachaslav Gerchicov

13

페이지의 색상을 변경하려고 할 때 tewha의 솔루션이 잘 작동하지만 모든 페이지의 색상을 변경하고 싶습니다. 모든 페이지에서 작동하도록 약간 수정 했습니다.UINavigationController

NavigationDelegate.h

//This will change the color of the navigation bar
#import <Foundation/Foundation.h>
@interface NavigationDelegate : NSObject<UINavigationControllerDelegate> {
}
@end

NavigationDelegate.m

#import "NavigationDelegate.h"
@implementation NavigationDelegate

- (void)navigationController:(UINavigationController *)navigationController 
      willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{
    CGRect frame = CGRectMake(0, 0, 200, 44);//TODO: Can we get the size of the text?
    UILabel* label = [[[UILabel alloc] initWithFrame:frame] autorelease];
    label.backgroundColor = [UIColor clearColor];
    label.font = [UIFont boldSystemFontOfSize:20.0];
    label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
    label.textAlignment = UITextAlignmentCenter;
    label.textColor = [UIColor yellowColor];
    //The two lines below are the only ones that have changed
    label.text=viewController.title;
    viewController.navigationItem.titleView = label;
}
@end

13

iOS 5부터는 titleTextAttribute Dictionary (UInavigation 컨트롤러 클래스 참조에서 사전 정의 된 사전)를 사용하여 탐색 텍스트의 제목 텍스트 색상 및 글꼴을 설정해야합니다.

 [[UINavigationBar appearance] setTitleTextAttributes:
 [NSDictionary dictionaryWithObjectsAndKeys:
  [UIColor blackColor],UITextAttributeTextColor, 
[UIFont fontWithName:@"ArialMT" size:16.0], UITextAttributeFont,nil]];

13

빠른 버전

대부분의 사람들이 Objective_C 버전의 답변을 제시했습니다.

이 기능을 원하는 사람에게 Swift를 사용 하여이 기능을 구현하고 싶습니다.

ViewDidload에서

1. NavigationBar 배경을 색상으로 만들려면 (예 : BLUE)

self.navigationController?.navigationBar.barTintColor = UIColor.blueColor()

2. NavigationBar 배경을 이미지로 만들려면 (예 : ABC.png)

let barMetrix = UIBarMetrics(rawValue: 0)!

self.navigationController?.navigationBar
      .setBackgroundImage(UIImage(named: "ABC"), forBarMetrics: barMetrix)

3. NavigationBar 제목을 변경하려면 (예 : [Font : Futura, 10] [Color : Red])

navigationController?.navigationBar.titleTextAttributes = [
            NSForegroundColorAttributeName : UIColor.redColor(),
            NSFontAttributeName : UIFont(name: "Futura", size: 10)!
        ]

(힌트 1 : UIFont 다음에 "!"표시를 잊지 마십시오)

(힌트 2 : 제목 텍스트의 속성이 많이 있습니다. 명령은 "NSFontAttributeName"을 클릭하십시오. 클래스를 입력하고 필요한 키 이름과 필요한 객체 유형을 볼 수 있습니다)

도와 드리겠습니다! : D


10

뷰 컨트롤러 viewDidLoad 또는 viewWillAppear 메서드에서 아래 코드를 사용하십시오.

- (void)viewDidLoad
{
    [super viewDidLoad];

    //I am using UIColor yellowColor for an example but you can use whatever color you like   
    self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor yellowColor]};

    //change the title here to whatever you like
    self.title = @"Home";
    // Do any additional setup after loading the view.
}

9

짧고 달다.

[[[self navigationController] navigationBar] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor redColor]}];

8

이것은 Stevens를 기반으로 한 내 솔루션입니다.

텍스트 길이에 따라 위치를 조정하기 위해 약간의 처리를하는 것이 유일한 차이점입니다. 애플이하는 방식과 비슷해 보입니다.

UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(([self.title length] < 10 ? UITextAlignmentCenter : UITextAlignmentLeft), 0, 480,44)];
titleLabel.backgroundColor = [UIColor clearColor];
titleLabel.font = [UIFont boldSystemFontOfSize: 20.0f];
titleLabel.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
titleLabel.textAlignment = ([self.title length] < 10 ? UITextAlignmentCenter : UITextAlignmentLeft);
titleLabel.textColor = [UIColor redColor];
titleLabel.text = self.title;
self.navigationItem.titleView = titleLabel;
[titleLabel release];

글꼴 크기에 따라 10 값을 조정할 수 있습니다


6

내 탐색 버튼이 텍스트를 가운데로 던지는 문제가 발생했습니다 (단 하나의 버튼 만있는 경우). 이를 해결하기 위해 방금 프레임 크기를 다음과 같이 변경했습니다.

CGRect frame = CGRectMake(0, 0, [self.title sizeWithFont:[UIFont boldSystemFontOfSize:20.0]].width, 44);

6

navigationBar의 배경 이미지와 왼쪽 버튼 항목을 사용자 정의했으며 회색 제목이 배경에 맞지 않습니다. 그런 다음 사용합니다.

[self.navigationBar setTintColor:[UIColor darkGrayColor]];

색조 색상을 회색으로 변경합니다. 그리고 제목은 이제 흰색입니다! 그것이 내가 원하는 것입니다.

도움이되기를 바랍니다 :)


좋지만 텍스트를 흰색으로 변경하는 경우에만 작동합니다. navBar를 [UIColor whiteColor]로 착색해도 텍스트 색상이 흰색으로 바뀝니다.
cschuff

6

self.title은 하위 탐색 표시 줄을 누르거나 탭 표시 줄에 제목을 표시 할 때 사용되므로 self.title을 설정하는 것이 좋습니다.

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // create and customize title view
        self.title = NSLocalizedString(@"My Custom Title", @"");
        UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectZero];
        titleLabel.text = self.title;
        titleLabel.font = [UIFont boldSystemFontOfSize:16];
        titleLabel.backgroundColor = [UIColor clearColor];
        titleLabel.textColor = [UIColor whiteColor];
        [titleLabel sizeToFit];
        self.navigationItem.titleView = titleLabel;
        [titleLabel release];
    }
}

6

이것은 꽤 오래된 스레드이지만 iOS 7 이상에서 탐색 막대 제목의 색상, 크기 및 세로 위치를 설정하는 것에 대한 답변을 제공한다고 생각합니다.

색상 및 크기

 NSDictionary *titleAttributes =@{
                                NSFontAttributeName :[UIFont fontWithName:@"Helvetica-Bold" size:14.0],
                                NSForegroundColorAttributeName : [UIColor whiteColor]
                                };

수직 위치

[[UINavigationBar appearance] setTitleVerticalPositionAdjustment:-10.0 forBarMetrics:UIBarMetricsDefault];

제목을 설정하고 속성 사전을 할당하십시오

[[self navigationItem] setTitle:@"CLUBHOUSE"];
self.navigationController.navigationBar.titleTextAttributes = titleAttributes;

5

이것은 스위프트에서 저에게 효과적입니다.

navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName:UIColor.white]

아주 가까이 있지만 문제는 제목에 이미 가능한 모든 속성을 덮어 쓰는 것입니다. 내 경우에는 글꼴이었습니다. 내가 함께 결국 코드이었다navigationController?.navigationBar.titleTextAttributes = { if let currentAttributes = navigationController?.navigationBar.titleTextAttributes { var newAttributes = currentAttributes newAttributes[NSForegroundColorAttributeName] = navigationTintColor return newAttributes } else { return [NSForegroundColorAttributeName: navigationTintColor]}}()
매틱 Oblak

잘 작동합니다. Obj-C의 경우 :self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName : UIColor.redColor};
Mike Keskinov

5

스위프트 4 & 4.2 버전 :

 self.navigationController.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.green]

4
self.navigationItem.title=@"Extras";
[self.navigationController.navigationBar setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"HelveticaNeue" size:21], NSFontAttributeName,[UIColor whiteColor],UITextAttributeTextColor,nil]];

3

제목의 글꼴 크기를 설정하려면 다음 조건을 사용했습니다.

if ([currentTitle length]>24) msize = 10.0f;
    else if ([currentTitle length]>16) msize = 14.0f;
    else if ([currentTitle length]>12) msize = 18.0f;

3

소음 감소를 위해 새로운 iOS 7 텍스트 속성과 최신 목표 c를 사용하여 Alex RR의 게시물 업데이트 :

NSShadow *titleShadow = [[NSShadow alloc] init];
titleShadow.shadowColor = [UIColor blackColor];
titleShadow.shadowOffset = CGSizeMake(-1, 0);
NSDictionary *navbarTitleTextAttributes = @{NSForegroundColorAttributeName:[UIColor whiteColor],
                                            NSShadowAttributeName:titleShadow};

[[UINavigationBar appearance] setTitleTextAttributes:navbarTitleTextAttributes];

3

나는 색상을 설정하는 적절한 방법 UINavigationBar은 다음과 같습니다.

NSDictionary *attributes=[NSDictionary dictionaryWithObjectsAndKeys:[UIColor redColor],UITextAttributeTextColor, nil];
self.titleTextAttributes = attributes;

위의 코드는에 서브 클래스로 작성되어 있으며 서브 클래스 화 UINavigationBar없이 작동합니다.


맞지만 iOS 5 만 해당됩니다. iOS 5가 출시 된 이래로 좋은 해결책이 될 정도로 길었습니다. 그리고 우리는 iOS 5 세계에 있기 때문에 [UINavigationBar appearance]제목 텍스트 속성을 사용 하고 설정할 수 있다는 점에 주목할 가치가 있습니다 (서브 클래스 링 UINavigationBar과 관련된 속임수를 선호하는 솔루션).
Ivan Vučica

@stringCode. "self.navigationController.navigationBar.titleTextAttributes = attributes;"없이 위의 코드를 초기화 할 수 있습니까?
Gajendra K Chauhan 2016 년

3

오리엔테이션 지원을 위해 이와 같이 사용

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,40)];
[view setBackgroundColor:[UIColor clearColor]];
[view setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight ];

UILabel *nameLabel = [[UILabel alloc] init];
[nameLabel setFrame:CGRectMake(0, 0, 320, 40)];
[nameLabel setBackgroundColor:[UIColor clearColor]];
[nameLabel setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin |UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin];
[nameLabel setTextColor:[UIColor whiteColor]];
[nameLabel setFont:[UIFont boldSystemFontOfSize:17]];
[nameLabel setText:titleString];
[nameLabel setTextAlignment:UITextAlignmentCenter];
[view addSubview:nameLabel];
[nameLabel release];
self.navigationItem.titleView = view;
[view release];

2

이것은 누락 된 것 중 하나입니다. 가장 좋은 방법은 자신의 사용자 지정 탐색 모음을 만들고 텍스트 상자를 추가하고 그런 식으로 색상을 조작하는 것입니다.


나는 당신의 아이디어를 따르고 있습니다 :) 제목을 가지고 놀기 위해 어떤 방법을 재정의해야합니까? 죄송합니다, 저는 정말 n00b입니다 :(
Sr.Richie

2

navBar에 버튼을 삽입 할 때 움직이는 레이블과 같은 문제가 발생하면 (다른 경우에는 날짜가로드 될 때 버튼으로 대체하는 스피너가 있음) 위의 솔루션이 작동하지 않았습니다 나를 위해, 여기에 항상 같은 장소에서 라벨을 작동시키고 유지 한 것이 있습니다 :

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
{
    // this will appear as the title in the navigation bar
    //CGRect frame = CGRectMake(0, 0, [self.title sizeWithFont:[UIFont boldSystemFontOfSize:20.0]].width, 44);
   CGRect frame = CGRectMake(0, 0, 180, 44);
    UILabel *label = [[[UILabel alloc] initWithFrame:frame] autorelease];



    label.backgroundColor = [UIColor clearColor];
    label.font = [UIFont boldSystemFontOfSize:20.0];
    label.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
    label.textAlignment = UITextAlignmentCenter;
    label.textColor = [UIColor yellowColor];
    self.navigationItem.titleView = label;
    label.text = NSLocalizedString(@"Latest Questions", @"");
    [label sizeToFit];
}

return self;

1

[label sizeToFit]를 호출해야합니다. 다른 단추가 탐색 모음을 차지할 때 제목보기에서 레이블이 자동으로 재배치 될 때 이상한 오프셋을 방지하기 위해 텍스트를 설정 한 후


1

appdelegate 파일에서이 방법을 사용할 수 있으며 모든보기에서 사용할 수 있습니다

+(UILabel *) navigationTitleLable:(NSString *)title
{
CGRect frame = CGRectMake(0, 0, 165, 44);
UILabel *label = [[[UILabel alloc] initWithFrame:frame] autorelease];
label.backgroundColor = [UIColor clearColor];
label.font = NAVIGATION_TITLE_LABLE_SIZE;
label.shadowColor = [UIColor whiteColor];
label.numberOfLines = 2;
label.lineBreakMode = UILineBreakModeTailTruncation;    
label.textAlignment = UITextAlignmentCenter;
[label setShadowOffset:CGSizeMake(0,1)]; 
label.textColor = [UIColor colorWithRed:51/255.0 green:51/255.0 blue:51/255.0 alpha:1.0];

//label.text = NSLocalizedString(title, @"");

return label;
}

1

titleTextAttributes 막대 제목 텍스트의 속성을 표시합니다.

@property (nonatomic, copy) NSDictionary * titleTextAttributes 토론 NSString UIKit 추가 참조에 설명 된 텍스트 속성 키를 사용하여 텍스트 속성 사전에서 제목의 글꼴, 텍스트 색상, 텍스트 그림자 색상 및 텍스트 그림자 오프셋을 지정할 수 있습니다.

iOS 5.0 이상에서 사용 가능합니다. UINavigationBar.h에서 선언

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