gpt4 book ai didi

ios - Swift 4 - 特定的 View Controller 状态栏样式没有改变

转载 作者:可可西里 更新时间:2023-10-31 23:57:23 24 4
gpt4 key购买 nike

实现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
}
}

enter image description here

jake.lange 的建议

enter image description here

最佳答案

您的 UINavigationController 是设置 preferredStatusBarColor 的 Controller 。我敢打赌,如果您尝试展示此 VC 而不是将其推送到导航 Controller ,您会看到浅色状态栏样式。

您可能想要做的是实现自定义导航 Controller 并覆盖首选状态栏样式。

class CustomNavController: UINavigationController {
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent;
}
}

编辑:

根据评论,您可能希望将首选状态栏颜色设置为位于 UINavigationController 最顶部的任何 ViewController。这是一个执行此操作的扩展,有了这个扩展,您不再需要上面的 CustomNavController 类,只需使用常规的 UINavigationController。您还需要覆盖每个 View Controller 中的首选状态栏样式。感谢这个 SO 问题,有关状态栏样式和导航 Controller 的更深入讨论,请参见此处:preferredStatusBarStyle isn't called

extension UINavigationController {
open override var childViewControllerForStatusBarStyle: UIViewController? {
return self.topViewController
}

open override var childViewControllerForStatusBarHidden: UIViewController? {
return self.topViewController
}
}

关于ios - Swift 4 - 特定的 View Controller 状态栏样式没有改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50658607/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com