Панель навигации 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
является:
Установите для UIViewControllerBasedStatusBarAppearance значение YES в файле.plist.
В viewDidLoad сделайте [self setNeedsStatusBarAppearanceUpdate];
Добавьте следующий метод:
override func preferredStatusBarStyle() -> UIStatusBarStyle { return .Default }
В вашем случае это навигация, так что сделайте это:
self.navigationController.navigationBar.barStyle = .Default
Надеюсь, это поможет.