UINavigation Проблема изменения цвета заголовка - PullRequest
0 голосов
/ 30 апреля 2018

При обращении к контроллеру я вижу, что цвет заголовка навигации не меняется. Пожалуйста, найдите код ниже.

ProfilescreenVC.swift
override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        self.navigationController?.navigationBar.tintColor = UIColor.white
        self.navigationController?.navigationBar.barTintColor = UIColor.primaryGreen
        let textAttributes = [NSAttributedStringKey.foregroundColor:UIColor.white]
        self.navigationController?.navigationBar.titleTextAttributes = textAttributes
    }

EditprofileVC.swift

override func viewDidLoad() {
        super.viewDidLoad()        
        self.style()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func style() {
        navigationController?.navigationBar.tintColor = UIColor.black
        navigationController?.navigationBar.barTintColor = UIColor.white
        let textAttributes = [NSAttributedStringKey.foregroundColor:UIColor.black]
        navigationController?.navigationBar.titleTextAttributes = textAttributes

        carbonTabSwipeNavigation.setIndicatorColor(UIColor.black)
        carbonTabSwipeNavigation.setTabBarHeight(50.0)
        carbonTabSwipeNavigation.setNormalColor(UIColor.hexString("9A9CA1"), font: UIFont.systemFont(ofSize: 15))
        carbonTabSwipeNavigation.setSelectedColor(UIColor.black, font: UIFont.systemFont(ofSize: 15))

        self.navigationController?.view.setNeedsLayout()
        self.navigationController?.view.layoutIfNeeded()
    }

    override func viewDidDisappear(_ animated: Bool) {
        navigationController?.navigationBar.tintColor = UIColor.white
        navigationController?.navigationBar.barTintColor = UIColor.white
        let textAttributes = [NSAttributedStringKey.foregroundColor:UIColor.white]
        navigationController?.navigationBar.titleTextAttributes = textAttributes
        super.viewDidDisappear(animated)
    }

У меня возникла проблема с изменением цвета заголовка, пожалуйста, проверьте следующее видео для лучшего понимания.

Ответы [ 2 ]

0 голосов
/ 30 апреля 2018

Кажется, это неуклюжая проблема, когда атрибуты заголовка панели навигации применяются только при движении вперед.

Попробовав все, что мог, я решил следующий обходной путь, где я предоставил свой собственный titleView в navigationItem.

    let titleView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 50))
    titleView.backgroundColor = UIColor.clear
    let titleLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 100, height: 50))
    titleLabel.textAlignment = .center
    titleLabel.text = "Profile"
    titleLabel.textColor = .white
    titleView.addSubview(titleLabel)
    self.navigationItem.titleView = titleView
    self.navigationItem.title = "Profile"

Обратите внимание, что вам также необходимо указать заголовок в файле navigationItem.title, чтобы при перемещении вперед была правильно установлена ​​кнопка возврата.

0 голосов
/ 30 апреля 2018
ProfilescreenVC.swift

override func viewWillAppear(_ animated: Bool) 
{
        super.viewWillAppear(animated)
        self.navigationController?.navigationBar.tintColor = UIColor.white
        self.navigationController?.navigationBar.barTintColor = UIColor.primaryGreen
        let textAttributes = [NSAttributedStringKey.foregroundColor:UIColor.white]
        self.navigationController?.navigationBar.titleTextAttributes = textAttributes
    }

и в editProfileVC

override func viewWillAppear(_ animated: Bool) 
        {
    navigationController?.navigationBar.tintColor = UIColor.black
            navigationController?.navigationBar.barTintColor = UIColor.white
            let textAttributes = [NSAttributedStringKey.foregroundColor:UIColor.black]
            navigationController?.navigationBar.titleTextAttributes = textAttributes
    }

Не нужно добавлять ViewDidDisapper в ваш код

...