programing

iOS 8에서 탐색 모음, 색조 및 제목 텍스트 색상

abcjava 2023. 4. 16. 14:17
반응형

iOS 8에서 탐색 모음, 색조 및 제목 텍스트 색상

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

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

}

여기에 이미지 설명 입력

인, 인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]

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

위해서titleTextAttributes문서에는 다음과 같은 내용이 있습니다.

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

난 알렉스의 대답이 좋아.빠른 시용품을 원하시면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
}

여기에 이미지 설명 입력

색상을 전체적으로 변경하려면 이 코드가 다음 위치에 있어야 합니다.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기능.

스위프트 5

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

스위프트 4

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

목표를 달성하려면 다음 행을 삽입해야 합니다.viewWillAppearCustomViewController로 이동합니다.

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

Swift 2.x의 경우 다음과 같이 동작합니다.

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

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

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

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

의 도움을 받아IBDesignable의 Interface 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
        }
    }
}

그런 다음 스토리보드에서 UINavigation Controller의 속성을 설정하기만 하면 됩니다.

여기에 이미지 설명 입력

Swift5 및 Xcode 10의 경우

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

앱 전체의 틴트 색상과 바 색상을 설정하고 싶다면 다음 코드를 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가 설정되었습니다.

swift 4로 업데이트

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

스위프트 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]

스위프트 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]

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

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

스위프트 4

override func viewDidLoad() {
    super.viewDidLoad()

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

스위프트 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
    }

커스텀 컬러의 경우TitleTextNavigationBarSwift 3의 심플하고 짧은 코드는 다음과 같습니다.

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

또는

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

Swift 4.2에서

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

Swift 3.2(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

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

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

언급URL : https://stackoverflow.com/questions/26008536/navigationbar-bar-tint-and-title-text-color-in-ios-8

반응형