在iOS 13中使用UISearchController时,iOS中的状态栏变为白色

时间:2019-10-09 20:21:40

标签: ios swift uisearchcontroller

这里有一种奇怪的情况。当我使用UISearchController时,我首先得到了这种外观(如预期的那样)

enter image description here

但是,当您在TextField中选择开始搜索时,状态栏将变为完全白色(如果处于黑暗模式则为黑色)

enter image description here

这从未发生过。 UISearchController中是否有一些设置可以告诉它在使用搜索栏时使用某种状态栏样式?

我希望它保持选择TextField之前的颜色

---编辑---

override func viewDidLoad() {
    super.viewDidLoad()

    self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: UIBarButtonItem.Style.plain, target: nil, action: nil)

    frc = getFRC()
    frc.delegate = self

    self.resultsSearchController.delegate = self
    let searchBar = self.resultsSearchController.searchBar

    self.resultsSearchController.searchResultsUpdater = self
    self.resultsSearchController.obscuresBackgroundDuringPresentation = false
    self.resultsSearchController.extendedLayoutIncludesOpaqueBars = true

    searchBar.sizeToFit()
    self.tableView.tableHeaderView = searchBar
    searchBar.placeholder = "Catalog Search"
    searchBar.barTintColor = UIColor.darkAqua
    searchBar.searchTextField.backgroundColor = UIColor.white

    self.definesPresentationContext = true

    searchBarHeight = searchBar.frame.height

    do {
        try frc.performFetch()
    } catch {
        error.tryError(tryMessage: "Perform initial fetch", loc: self)
    }

    if tutorials.catalog {
        createTutorialTab(segueNameOnOpen: "catalogTutorial")
    }
}

1 个答案:

答案 0 :(得分:0)

您可以使用此功能更改状态栏的颜色,这是一种处理状态栏的技巧;)。如果您在整个应用程序中使用一个主题状态栏,请从AppDelegate中的didFinishLaunching调用此功能。

func changeStatusBar(backgroundColor: UIColor, contentColor:UIColor) {

    if let statusBar = UIApplication.shared.value(forKey: "statusBar") as? UIView {
        statusBar.backgroundColor = backgroundColor
        statusBar.setValue(contentColor, forKey: "foregroundColor")
    }
}