Панель навигации IOS tintColor не станет белой, если для навигационного контроллера установлено значение false

У меня была проблема с одним из моих проектов XCode. Я пытаюсь скрыть панель навигации приложения IOS, но сохраняю белый оттенок на секции / значках времени, носителя и батареи. Я могу только повернуть оттенок белого цвета, если для навигационного контроллера установлено значение false в self.navigationController?.navigationBarHidden = falseКогда установлено значение true, оттенок становится белым, и проблем нет, но панель навигации там цветная. Вот мой код

import UIKit



class ViewController: UIViewController, UITextFieldDelegate {
    @IBOutlet weak var menuButton:UIBarButtonItem!

    @IBOutlet weak var emailTxt: UITextField!
    @IBOutlet weak var passwordTxt: UITextField!
    @IBOutlet weak var signinBtn: UIButton!
    @IBOutlet weak var signupBtn: UIButton!


    var varView = Int()



    override func viewDidLoad() {


        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        emailTxt.delegate = self

        let theWidth = view.frame.size.width
        let theHeight = view.frame.size.height

        emailTxt.frame = CGRectMake(40, 200, theWidth-80, 30)
        passwordTxt.frame = CGRectMake(40, 240, theWidth-80, 30)

        signinBtn.frame = CGRectMake(theWidth-228, 340, 59, 30)

         signupBtn.frame = CGRectMake(theWidth-228, 390, 59, 30)

        let nav = self.navigationController?.navigationBar
        nav?.barStyle = UIBarStyle.Black
        nav?.tintColor = UIColor.whiteColor()
        nav?.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]

        self.navigationController?.navigationBarHidden = true








        //maparea


    }



    func textFieldShouldReturn(textField: UITextField) -> Bool {
        textField.resignFirstResponder()
        return true;
    }

    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
    //emailTxt.resignFirstResponder()
        self.view.endEditing(true)
    }

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


    @IBAction func signInBtn(sender: AnyObject) {

        PFUser.logInWithUsernameInBackground(emailTxt.text!, password: passwordTxt.text!) {
            (user:PFUser?, error:NSError?) -> Void in

            if error == nil {

                print("logIn")
                self.performSegueWithIdentifier("gotoMainVCFromSigninVC", sender: self)

            } else {

                print("error")
            }

        }

    }

     }

3 ответа

Решение

В вашем контроллере представления вы можете переопределить preferredStatusBarStyle как это:

    override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return .LightContent
}

Ответ @adrianokw будет для одного viewcontroller, если вы хотите сделать это для всего приложения, добавьте следующее в info.plist

Стиль строки состояния
UIStatusBarStyleLightContent

Просмотр внешнего вида строки состояния контроллера
НЕТ

Больше информации здесь

Ваша проблема не связана с панелью навигации. Это относится к строке состояния. Ваша строка состояния lightContent так ты увидишь белое. Вы просто измените это на Default и ты увидишь лучше.

И изменить строку состояния с viewcontroller является:

  1. Установите для UIViewControllerBasedStatusBarAppearance значение YES в файле.plist.

  2. В viewDidLoad сделайте [self setNeedsStatusBarAppearanceUpdate];

  3. Добавьте следующий метод:

    override func preferredStatusBarStyle() -> UIStatusBarStyle {
        return .Default
    }
    

В вашем случае это навигация, так что сделайте это:

self.navigationController.navigationBar.barStyle = .Default

Надеюсь, это поможет.

Другие вопросы по тегам