实施UIViewController
后,由于某种原因,状态栏内容颜色似乎没有变化(仍然是黑色)。如何仅以此特定UIViewController
使用Swift 4.0以编程方式将其更改为“光”模式(白色)?不是整个申请。
ViewController.swift类
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.blue
self.title = "Hello World"
self.navigationController?.navigationBar.barTintColor = UIColor.gray
self.navigationController?.navigationBar.prefersLargeTitles = true
self.navigationController?.navigationItem.largeTitleDisplayMode = .automatic
self.navigationController?.navigationBar.largeTitleTextAttributes = [
NSAttributedStringKey.foregroundColor: UIColor.white,
NSAttributedStringKey.font : UIFont.preferredFont(forTextStyle: .largeTitle)
]
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
}
jake.lange的建议
答案 0 :(得分:5)
你的UINavigationController是设置preferredStatusBarColor的那个。我敢打赌,如果您尝试使用此VC而不是将其推送到导航控制器,您将看到灯状态栏样式。
您可能想要做的是实现自定义导航控制器并覆盖首选状态栏样式。
for h in df['user'].unique():
g = Counter(df['class'])
print (g)
编辑:
根据评论,您可能要做的是将首选状态栏颜色设置为ViewController是UINavigationController的最顶层。这是一个扩展,使用此扩展,您不再需要上面的CustomNavController类,只使用常规的UINavigationController。您还需要覆盖每个视图控制器中的首选状态栏样式。相信这个SO问题,请参阅此处以了解有关statusbarstyle和导航控制器的更多深入讨论:preferredStatusBarStyle isn't called
Counter({4: 3062, 1: 1250, 0: 393, 3: 281, 2: 13})
Counter({4: 3062, 1: 1250, 0: 393, 3: 281, 2: 13})
Counter({4: 3062, 1: 1250, 0: 393, 3: 281, 2: 13})
Counter({4: 3062, 1: 1250, 0: 393, 3: 281, 2: 13})
Counter({4: 3062, 1: 1250, 0: 393, 3: 281, 2: 13})
Counter({4: 3062, 1: 1250, 0: 393, 3: 281, 2: 13})
Counter({4: 3062, 1: 1250, 0: 393, 3: 281, 2: 13})
Counter({4: 3062, 1: 1250, 0: 393, 3: 281, 2: 13})
Counter({4: 3062, 1: 1250, 0: 393, 3: 281, 2: 13})
Counter({4: 3062, 1: 1250, 0: 393, 3: 281, 2: 13})
答案 1 :(得分:1)
如果此标志“查看基于控制器的状态栏外观”设置为NO,您可以检查Info.plist文件吗?需要将其设置为YES以允许基于视图控制器的外观。
答案 2 :(得分:0)
为我工作:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.navigationBar.barStyle = .blackTranslucent
self.navigationController?.navigationBar.titleTextAttributes = [.foregroundColor: UIColor.white]
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}