Изменить цвет панели навигации и цвет заголовка на разных экранах - PullRequest
0 голосов
/ 27 июня 2018

В моем приложении для iPhone у меня есть два цвета фона NavigationC0ntroller и Цвет заголовка

  1. Белый цвет фона + Название красного цвета
  2. Чистый цвет фона + Белый цвет заголовка

Я использую общий код, указанный ниже, для изменения цвета фона и цвета заголовка

@objc class Helper : NSObject{
class func restNavigationBarWithNavigationController(navigationController : UINavigationController , withColor : UIColor,isTranslucent : Bool )
{
    navigationController.navigationBar.setBackgroundImage(UIImage(), for: .default)
    navigationController.navigationBar.shadowImage = UIImage()
    navigationController.navigationBar.isTranslucent = isTranslucent
    navigationController.view.backgroundColor = withColor
    navigationController.navigationBar.backgroundColor = withColor
}
}

Я звоню выше в viewdidload & ViewWIllAppear контроллеров представления, как показано ниже

self.navigationController?.navigationBar.tintColor = .white

Helper.restNavigationBarWithNavigationController(navigationController: 
self.navigationController!, withColor: .clear, isTranslucent: true)

Но приведенный выше код не работает, если я выскакиваю экран с белого цвета на заголовок красного цвета и наоборот.

Пожалуйста, дайте мне знать, что я здесь не так делаю.

Любая Идея или предложение было бы замечательно. (К вашему сведению: я использую ту же кодовую базу в контроллерах представления Objective-c)

1 Ответ

0 голосов
/ 27 июня 2018

Ну, если вы хотите изменить стиль панели навигации на каждом экране, вы можете использовать следующий код:

class FirstViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // White color Background + Red Color Title
        navigationController.navigationBar.barTintColor = .white
        navigationController.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.red]
    }
}

// Далее

class SecondViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Clear color Background + White color title
        navigationController.navigationBar.barTintColor = .clear
        navigationController.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
    }
}

Это работает в Swift 4

...