iOS 8의 탐색 막대 막대, 색조 및 제목 텍스트 색상


177

상태 표시 줄의 배경 텍스트는 여전히 검은 색입니다. 색상을 흰색으로 바꾸려면 어떻게합니까?

// io8, swift, Xcode 6.0.1 
override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationController?.navigationBar.barTintColor = UIColor.blackColor()
    self.navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.orangeColor()]

}

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

답변:


312

AppDelegate.swift, application(_:didFinishLaunchingWithOptions:)나는 다음을 넣었다.

UINavigationBar.appearance().barTintColor = UIColor(red: 234.0/255.0, green: 46.0/255.0, blue: 73.0/255.0, alpha: 1.0)
UINavigationBar.appearance().tintColor = UIColor.white
UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.white]

( NSAttributedStringKey대신 Swift 4 이하 사용 NSAttributedString.Key)

titleTextAttributes에 대해 문서 는 다음 과 같이 말합니다.

텍스트 속성 사전에서 제목의 글꼴, 텍스트 색상, 텍스트 그림자 색상 및 텍스트 그림자 오프셋을 지정할 수 있습니다


6
여러 개의 탐색 모음이 있으면 어떻게합니까?
sumit

6
tintColor는 Xcode 7.3.1에서 작동하지 않습니다. 텍스트는 여전히 검은 색입니다.
triiiiista

1
Xcode 8.2에서 titleTextAttributes는 자동 완성되지 않지만 작동합니다.
okysabeni

barTintColor가 여전히 필요한가요? 그 줄을 삭제하면 여전히 작동합니다
rgkobashi

122

나는 Alex의 대답을 좋아한다. 무언가를 빨리 시험 해보고 싶다면 ViewController반드시 사용하십시오.

viewWillAppear()
override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    var nav = self.navigationController?.navigationBar
    nav?.barStyle = UIBarStyle.Black
    nav?.tintColor = UIColor.white
    nav?.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.orange]
    //nav?.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.orange] // swift 4.2
}

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


하지만 ISO 8.1 사용하고 있습니다
Saorikido

1
왜 viewWillAppear ()입니까? viewDidLoad 에서이 작업을 수행하고 있으며 정상적으로 작동합니다.
Adam Johns

4
UIView를 볼 때마다 설정하기를 원하기 때문입니다. viewTidLoad ()에서 UITabBar보기에서 설정하면 다시 설정된 다른 탭으로 이동 한 다음 원래보기가 한 번만로드되었으므로 덮어 씁니다.
FractalDoctor

2
swift 4 업데이트 – NSForegroundColorAttributeName이제NSAttributedStringKey.foregroundColor
Alan Scarpa 1

3
스위프트 4.2 업데이트 : NSAttributedString.Key.foregroundColor대신NSForegroundColorAttributeName
스테판 PAQUET

81

색상을 보편적으로 변경하려면이 코드는 NavigationControllerviewDidLoad함수 에 있어야 합니다.

class NavigationController: UINavigationController, UIViewControllerTransitioningDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Status bar white font
        self.navigationBar.barStyle = UIBarStyle.Black
        self.navigationBar.tintColor = UIColor.whiteColor()
    }
}

당을 변경하려면, ViewController당신은 참조 할 것 NavigationController으로부터 ViewController한다는 점에서 유사한 라인을 쓰기 ViewControllerviewWillAppear기능.


이러한 메소드를 사용하기 위해 NavigationController를 대체하려면 어떻게해야합니까?
AG1

NavigationController를 재정의하지 않고 ViewDidLoad 함수에서 수정하면됩니다. 위의 답변을 업데이트했습니다.
Alex

1
따라서 개발자는 NavigationController.swift를 작업 공간에 추가해야합니까? 그렇다면 깔끔합니다!
AG1

5
@ AG1 이것은 잘못된 것입니다. NavigationController.swift 파일 만 추가하면 충분하지 않습니다. 기본적으로 Generic UINavigationController를 사용하므로 스토리 보드의 Navigation Controller를 Identity Inspector의이 파일에 연결해야합니다.
kakubei

2
스토리 보드에서이 모든 작업을 사용자 정의 내비게이션 컨트롤러를 만들 필요없이 수행 할 수도 있습니다. Bar Tine 및 Style의 속성은 속성 관리자 아래의 오른쪽에 있습니다.
Markymark

31

스위프트 5

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

스위프트 4

self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]

2
내가 얻을 : 유형 'NSAttributedStringKey'(일명 '는 NSString')는 더 멤버 'foregroundColor의'가 없다
Alfi

? : 최신 버전의 엑스 코드 (10)와 빠른 4.2 self.navigationController .navigationBar.titleTextAttributes = [UIColor.white NSAttributedString.Key.foregroundColor]에 대한 코드 아래 사용하세요
Bhavsang 잼

16

objective-c 에서 작업하려면 viewWillAppearCustomViewController에 다음 줄을 넣어야합니다 .

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

Swift2.x의 경우 다음 같이 작동합니다.

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

Swift3.x의 경우 다음 같이 작동합니다.

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

그러나 다른 뷰 컨트롤러로 돌아 가면 색상도 변경되었습니다. 이것을 방지하는 방법에 대한 아이디어. 내 메인 뷰 컨트롤러가 하나의 색상이되고 다른 색상이되기를 원합니다.
user3163404

1
새 뷰 컨트롤러에서 색상을 설정해야한다고 생각합니다.
Niko Klausnitzer

13

스토리 보드에서이 작업을 수행하려면 (Interface Builder Inspector)

의 도움으로 IBDesignableInterface Builder Inspector에 더 많은 옵션을 추가 UINavigationController하고 스토리 보드에서 조정할 수 있습니다. 먼저 다음 코드를 프로젝트에 추가하십시오.

@IBDesignable extension UINavigationController {
    @IBInspectable var barTintColor: UIColor? {
        set {
            navigationBar.barTintColor = newValue
        }
        get {
            guard  let color = navigationBar.barTintColor else { return nil }
            return color
        }
    }

    @IBInspectable var tintColor: UIColor? {
        set {
            navigationBar.tintColor = newValue
        }
        get {
            guard  let color = navigationBar.tintColor else { return nil }
            return color
        }
    }

    @IBInspectable var titleColor: UIColor? {
        set {
            guard let color = newValue else { return }
            navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: color]
        }
        get {
            return navigationBar.titleTextAttributes?["NSForegroundColorAttributeName"] as? UIColor
        }
    }
}

그런 다음 스토리 보드에서 UINavigationController의 속성을 설정하십시오.

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


7

전체 앱에 색조 색상과 막대 색상을 설정하려면 AppDelegate.swift에 다음 코드를 추가 할 수 있습니다.

 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.

    var navigationBarAppearace = UINavigationBar.appearance()

    navigationBarAppearace.tintColor = UIColor(red:1.00, green:1.00, blue:1.00, alpha:1.0)
    navigationBarAppearace.barTintColor = UIColor(red:0.76, green:0.40, blue:0.40, alpha:1.0)
    navigationBarAppearace.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]
    return true
`

탐색 막대 TintColor 및 tintColor가 설정되었습니다.


6

Swift 4로 업데이트

override func viewDidLoad() {
    super.viewDidLoad()
        self.navigationController?.navigationBar.tintColor = UIColor.blue
        self.navigationController?.navigationBar.barStyle = UIBarStyle.black
}

6

Swift5 및 Xcode 10에서

self.navigationItem.title = "your name"
let textAttributes = [NSAttributedStringKey.foregroundColor:UIColor.white]
navigationController?.navigationBar.titleTextAttributes = textAttributes

이 코드 스 니펫은 문제를 해결할 수 있지만 설명을 포함하면 게시물의 품질을 향상시키는 데 실제로 도움이됩니다. 앞으로 독자에게 질문에 대한 답변을 제공하고 있으며 해당 사람들이 귀하의 코드 제안 이유를 모를 수도 있습니다.
31piy

4

Albert의 답변의 Swift 4.2 버전

UINavigationBar.appearance().barTintColor = UIColor(red: 234.0/255.0, green: 46.0/255.0, blue: 73.0/255.0, alpha: 1.0)
UINavigationBar.appearance().tintColor = UIColor.white
UINavigationBar.appearance().titleTextAttributes = [.foregroundColor : UIColor.white]

이 답변을 추가 한 방법이 정말 마음에 들었습니다. .barTintColor는 현재 옵션이 아닙니다. .backgroundColor을 의미합니까?
Ben

4

Swift 버전 4.2에서 탐색 줄 제목의 텍스트 색상을 흰색으로 설정 :

navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]

3

스위프트 4

override func viewDidLoad() {
    super.viewDidLoad()

    navigationController?.navigationBar.barTintColor = UIColor.orange
    navigationController?.navigationBar.tintColor = UIColor.white
    navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]
}

3

스위프트 4.1

viewDidLoad에 func 추가

override func viewDidLoad() {
  super.viewDidLoad()

  setup()
}   

에서 setup()기능 추가 :

func setup() {

        navigationController?.navigationBar.prefersLargeTitles = true
        navigationController?.navigationBar.barStyle = .blackOpaque
        navigationItem.title = "YOUR_TITLE_HERE"
        navigationController?.navigationBar.barTintColor = .black
        let attributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
        navigationController?.navigationBar.largeTitleTextAttributes = attributes
    }

1

사용자 정의 색상을 TitleTextat NavigationBar로 설정하려면 Swift 3의 간단하고 짧은 코드입니다.

UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName : UIColor.white]

또는

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

1

스위프트 4.2

var nav = self.navigationController?.navigationBar
nav?.barStyle = UIBarStyle.Black
nav?.tintColor = UIColor.white
nav?.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.orange]

1

Swift 3.2를 통해 Swift (Swift 4.0이 아님)

    self.navigationController?.navigationItem.largeTitleDisplayMode = .always
    self.navigationController?.navigationBar.prefersLargeTitles = true
    self.navigationController?.navigationBar.largeTitleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]

    // unconfirmed but I assume this works:
    self.navigationController?.navigationBar.barTintColor = UIColor.white
    self.navigationController?.navigationBar.barStyle = UIBarStyle.black

0

Swift 3에서는 다음과 같이 작동합니다.

navigationController?.navigationBar.barTintColor = UIColor.white
navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.blue]

0

스위프트 5.1

복사하여 붙여 넣기 만하고 ViewDidLoad()필요에 따라 크기와 크기를 변경하십시오. 복사하여 붙여 넣기 전에 화면 상단에 탐색 표시 줄을 추가하십시오.

navigationController?.navigationBar.titleTextAttributes = [ NSAttributedString.Key.font: UIFont(name: "TitilliumWeb-Bold.ttf", size: 16.0)!, NSAttributedString.Key.foregroundColor: UIColor.white]

작동하지 않으면 텍스트 색상 만 변경해보십시오.

navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.