iOS 변경 탐색 막대 제목 글꼴 및 색상


101

그래서 탐색 모음 제목 글꼴을 변경해야하는이 코드가 있지만

    NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont
                                                                       fontWithName:_dataManager.optionsSettings.fontString size:14], NSFontAttributeName,
                            [UIColor whiteColor], NSForegroundColorAttributeName, nil];

[[UINavigationBar appearance] setTitleTextAttributes:attributes];

이 코드로 뒤로 버튼 글꼴을 변경하면 잘 작동합니다.

   //set backbutton font
NSDictionary *normalAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
                                  [UIFont fontWithName:_dataManager.optionsSettings.fontString size:15], NSFontAttributeName,
                                  nil];
[[UIBarButtonItem appearance] setTitleTextAttributes:normalAttributes
                                            forState:UIControlStateNormal];

답변:


251

제목 글꼴 (및 색상)을 변경하는 올바른 방법은 다음과 같습니다.

[self.navigationController.navigationBar setTitleTextAttributes:
 @{NSForegroundColorAttributeName:[UIColor redColor],
NSFontAttributeName:[UIFont fontWithName:@"mplus-1c-regular" size:21]}];

편집 : Swift 4.2

self.navigationController?.navigationBar.titleTextAttributes =
[NSAttributedString.Key.foregroundColor: UIColor.red,
 NSAttributedString.Key.font: UIFont(name: "mplus-1c-regular", size: 21)!]

편집 : Swift 4

self.navigationController?.navigationBar.titleTextAttributes =
[NSAttributedStringKey.foregroundColor: UIColor.red,
 NSAttributedStringKey.font: UIFont(name: "mplus-1c-regular", size: 21)!]

스위프트 3 :

self.navigationController?.navigationBar.titleTextAttributes = 
[NSForegroundColorAttributeName: UIColor.redColor(),
 NSFontAttributeName: UIFont(name: "mplus-1c-regular", size: 21)!]

2
크기는 내가 시도 같은 관계없이 값을 유지
라파엘 이어-Rivard에게

1
예, 글꼴이 제대로로드되지 않았 음을 깨달았습니다. 그럼에도 불구하고 왜, 내가 가져온 OpenSans - 빛과 OpenSans - 정기 같은 방법을 알아낼 수 없습니다 만 OpenSans 빛은 사용할 수있을 것 같습니다 ...
라파엘 이어-Rivard

1
Obj-C 코드에 닫는 대괄호가 없습니다. 다음과 같아야합니다. [self.navigationController.navigationBar setTitleTextAttributes : @ {NSForegroundColorAttributeName : [UIColor redColor], NSFontAttributeName : [UIFont fontWithName : @ "mplus-1c-regular"size : 21]}];
Dylan Hand

backBarButton 글꼴 변경 링크로 이동 : stackoverflow.com/a/16538596/5967144
soorej babu

LargeTitle NavBar를 사용할 때 어떻습니까? 나는 navigationBar.LargeTitleTextAttributes그 점에 대해 아무것도 찾지 못했습니다 . LargeTitle 글꼴을 전역 적으로 설정하는 방법을 알고 있습니까?
iKK

54

다른 답변에는 문제가 없습니다. 글꼴 설정을 위해 스토리 보드 버전을 공유하고 있습니다.

1. 내비게이션 컨트롤러 내에서 내비게이션 바 선택

navbar

2. Attributes Inspector에서 제목 글꼴 변경

제목 글꼴

(Xcode가 새 글꼴을 선택하기 전에 탐색 막대의 막대 색조를 전환해야 할 것입니다)

메모 (주의 사항)

이것이 Xcode 7.1.1+에서 작동하는지 확인했습니다. ( 아래 샘플 참조 )

  1. 글꼴이 적용되기 전에 탐색 모음 색조를 전환해야합니다 (Xcode의 버그처럼 보임; 기본값으로 다시 전환하면 글꼴이 고정됨).
  2. 시스템 폰트를 선택하는 경우 ~ 크기가 0.0이 아닌지 확인하십시오 (그렇지 않으면 새 폰트는 무시됩니다)

크기

  1. 뷰 계층 구조에 NavBar가 하나만있을 때 이것이 문제없이 작동하는 것처럼 보입니다. 동일한 스택의 보조 NavBar가 무시되는 것으로 보입니다. (마스터 내비게이션 컨트롤러의 navBar를 표시하는 경우 다른 모든 사용자 지정 navBar 설정은 무시됩니다).

Gotchas (deux)

이들 중 일부는 반복되므로 주목할 가치가 매우 높습니다.

  1. 때때로 스토리 보드 xml이 손상됩니다. 이를 위해서는 스토리 보드의 구조를 소스 코드 모드로 검토해야합니다 (스토리 보드 파일을 마우스 오른쪽 버튼으로 클릭> 다른 이름으로 열기 ...).
  2. 어떤 경우에는 사용자 정의 런타임 속성과 연관된 navigationItem 태그가보기 컨트롤러 태그 대신보기 태그의 xml 하위로 설정되었습니다. 그렇다면 올바른 작동을 위해 태그 사이에서 제거하십시오.
  3. NavBar Tint를 토글하여 사용자 정의 글꼴이 사용되도록합니다.
  4. 동적 글꼴 스타일을 사용하지 않는 경우 글꼴의 크기 매개 변수를 확인하십시오.
  5. 보기 계층 구조가 설정을 재정의합니다. 스택 당 하나의 글꼴이 가능한 것으로 보입니다.

결과

navbar-italic

샘플

사용자 정의 글꼴 처리

참고 ~ Code With Chris 웹 사이트에서 멋진 체크리스트 를 찾을 수 있으며 샘플 다운로드 프로젝트를 볼 수 있습니다.

자신 만의 글꼴이 있고 스토리 보드에서 사용하려는 경우 다음 SO 질문 에 적절한 답변이 있습니다. 한 가지 대답은 이러한 단계를 식별합니다.

  1. 사용자 지정 글꼴 파일 (.ttf, .ttc) 가져 오기
  2. Xcode 프로젝트로 글꼴 파일 가져 오기
  3. app-info.plist에서 응용 프로그램에서 제공하는 Fonts라는 키를 추가합니다. 배열 유형이며 모든 글꼴 파일 이름을 배열에 추가합니다.
  4. 스토리 보드의 NavigationBar에서 Attribute Inspector로 이동하여 글꼴 선택 영역의 오른쪽 아이콘 버튼을 클릭합니다. 팝업 패널에서 사용자 지정에 글꼴을 선택하고 포함 된 글꼴 이름 패밀리를 선택합니다.

사용자 정의 글꼴 해결 방법

따라서 Xcode는 자연스럽게 UINavigationItem에서 사용자 지정 글꼴을 처리 할 수있는 것처럼 보이지만 해당 기능은 제대로 업데이트되지 않습니다 (선택된 글꼴은 무시 됨).

UINavigationItem

이 문제를 해결하려면 :

한 가지 방법은 스토리 보드를 사용하여 수정하고 코드 줄을 추가하는 것입니다. 먼저 UIView (UIButton, UILabel 또는 기타 UIView 하위 클래스)를 View Controller에 추가합니다 (탐색 항목이 아님 ... Xcode는 현재 허용하지 않습니다. 그). 컨트롤을 추가 한 후 스토리 보드의 글꼴을 수정하고 뷰 컨트롤러에 대한 아웃렛으로 참조를 추가 할 수 있습니다. 해당 뷰를 UINavigationItem.titleView에 할당하기 만하면됩니다. 필요한 경우 코드에 텍스트 이름을 설정할 수도 있습니다. 보고 된 버그 (23600285).

@IBOutlet var customFontTitleView: UIButton!

//Sometime later...    
self.navigationItem.titleView = customFontTitleView

21

이 시도:

NSDictionary *textAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
                                [UIColor whiteColor],NSForegroundColorAttributeName,
                                [UIColor whiteColor],NSBackgroundColorAttributeName,nil];
self.navigationController.navigationBar.titleTextAttributes = textAttributes;

14

탐색 표시 줄 제목 변경을위한 내 Swift 코드 :

let attributes = [NSFontAttributeName : UIFont(name: "Roboto-Medium", size: 16)!, NSForegroundColorAttributeName : UIColor.whiteColor()]
self.navigationController.navigationBar.titleTextAttributes = attributes

배경 글꼴도 변경하려면 AppDelegate에 다음이 있습니다.

let attributes = [NSFontAttributeName : UIFont(name: "Roboto-Medium", size: 16)!, NSForegroundColorAttributeName : UIColor.whiteColor()]
UIBarButtonItem.appearance().setTitleTextAttributes(attributes, forState: UIControlState.Normal)

8

App Delegate-Did Finish Lauch에이 한 줄 코드를 추가합니다. 응용 프로그램 전체에서 탐색 모음의 글꼴, 색상을 변경합니다.

UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white, NSAttributedString.Key.font: UIFont(name: "YOUR FONT NAME", size: 25.0)!]

5

귀하의 질문에 대한 답변은 다음과 같습니다.

뷰가로드 된 후 탐색 모음 제목이 업데이트되었으므로 코드를 아래 방법으로 이동하십시오. viewDidLoad에서 위의 코드를 추가하려고 시도했지만 작동하지 않습니다. viewDidAppear 메서드에서 제대로 작동합니다.

  -(void)viewDidAppear:(BOOL)animated{}

3

누구나 Swift 3 버전이 필요합니다. redColor()로 변경되었습니다 red.

self.navigationController?.navigationBar.titleTextAttributes =
        [NSForegroundColorAttributeName: UIColor.red,
         NSFontAttributeName: UIFont(name: "{your-font-name}", size: 21)!]

2

리터럴을 사용하면 좀 더 읽기 쉽습니다.

self.navigationController.navigationBar.titleTextAttributes = @{
                                                              NSFontAttributeName:[UIFont fontWithName:@"mplus-1c-regular" size:21],
                                                              NSForegroundColorAttributeName: [UIColor whiteColor]
                                                              };

2

프로그래밍 방식으로 NavigationItem 제목을 변경하려고 할 때 패밀리 글꼴을 찾을 수 없었기 때문에 (많은 시도를했지만 올바르게 실행하는 것은 불가능) 한 가지 문제가 있었기 때문에 스토리 보드에서 하나의 해결 방법이 매우 훌륭하고 쉽습니다.

  1. 먼저 Navigation Item 아래에 하나의 뷰를 중간에 추가하고 backGroundColor를 명확한 색상으로 설정하여 navBar와 동일한 색상을 갖는 것을 잊지 마십시오.

여기에 이미지 설명 입력

  1. 그런 다음이보기에서 편집 할 수있는 레이블 (텍스트 색상, 글꼴, 크기 설정 ...)을 추가합니다.
  2. 레이블 (Top = 0, Bottom = 0, Trailing = 0 및 Leading = 0)에 제약 조건을 레이블의보기 및 가운데 텍스트에 추가합니다.

마지막으로 문서 개요에 다음과 같은 내용이 있어야합니다.

여기에 이미지 설명 입력

그리고 ViewController에서 다음과 같습니다.

여기에 이미지 설명 입력

도움이되기를 바랍니다.


2

빠른:-

self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white, NSAttributedStringKey.font: UIFont(name:"Love Nature", size: 40)!]

1

이것은 Swift 4의 대안입니다 (이미 @Josh의 답변).

let titleTextAttributed: [NSAttributedStringKey: Any] = [.foregroundColor: UIColor.red, .font: UIFont(name: "AvenirNext-Regular", size: 20) as Any]
navigationController?.navigationBar.titleTextAttributes = titleTextAttributed

1

iOS 11

여기에 이미지 설명 입력

목표 -C

if (@available(iOS 11.0, *)) {
    self.navigationController.navigationItem.largeTitleDisplayMode =  UINavigationItemLargeTitleDisplayModeAlways;
    self.navigationController.navigationBar.prefersLargeTitles = true;

// Change Color
    self.navigationController.navigationBar.largeTitleTextAttributes = @{NSForegroundColorAttributeName: [UIColor whiteColor]};

} else {
    // Fallback on earlier versions
}

1

Objective-C가 글꼴 및 색상을 설정하려면

- (void)_setup {
    NSDictionary *barButtonTitleAttributes = @{
                                               NSForegroundColorAttributeName : [UIColor whiteColor],
                                               NSFontAttributeName :[UIFont fontWithName:@"Lato-Regular" size:15.0]
                                               };
    [self.navigationBar setTitleTextAttributes:barButtonTitleAttributes];

}

0

다음은 Swift 4에 대한 답변입니다 😁 :

    let textAttributes:[String:Any]? = [NSAttributedStringKey.foregroundColor.rawValue:UIColor.blue, NSAttributedStringKey.font.rawValue:UIFont(name:"Avenir Next", size:20)!]
    navigationController?.navigationBar.titleTextAttributes = textAttributes

0

컴파일 오류를 피하기 위해 키의 원시 값을 추가하는 것을 잊지 마십시오.

    let textAttributes:[NSAttributedStringKey: Any] = [NSAttributedStringKey(rawValue: NSAttributedStringKey.foregroundColor.rawValue):UIColor.blue, NSAttributedStringKey(rawValue: NSAttributedStringKey.font.rawValue):UIFont(name:"OpenSans", size: 17)!]
    navigationController?.navigationBar.titleTextAttributes = textAttributes

0

스위프트 4.2

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

0

이 확장 추가

extension UINavigationBar {
    func changeFont() {
        self.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white, NSAttributedStringKey.font: UIFont(name:"Poppins-Medium", size: 17)!]
    }
}

viewDidLoad ()에 다음 줄을 추가합니다.

self.navigationController?.navigationBar.changeFont()

-1

신속한 3.0 작업 제목 색상을 변경하려면 다음과 같이 titleTextAttributes를 추가해야합니다.

        let textAttributes = [NSForegroundColorAttributeName:UIColor.white]
        self.navigationController.navigationBar.titleTextAttributes = textAttributes

For changing navigationBar background color you can use this
        self.navigationController.navigationBar.barTintColor = UIColor.white

For changing navigationBar back title and back arrow color you can use this
       self.navigationController.navigationBar.tintColor = UIColor.white
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.