Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift UISearchController';s UISearchBar最初不应用自定义设置_Swift_Uisearchbar_Uisearchcontroller - Fatal编程技术网

Swift UISearchController';s UISearchBar最初不应用自定义设置

Swift UISearchController';s UISearchBar最初不应用自定义设置,swift,uisearchbar,uisearchcontroller,Swift,Uisearchbar,Uisearchcontroller,我一直在努力定制UISearcBar。我正在使用的应用程序支持iOS 11+,因此我决定将iOS 13以上和以下版本的定制过程分开。下面是我正在使用的UISearchController的子类 class SearchController: UISearchController { override func viewDidLoad() { super.viewDidLoad() DispatchQueue.main.async

我一直在努力定制
UISearcBar
。我正在使用的应用程序支持iOS 11+,因此我决定将iOS 13以上和以下版本的定制过程分开。下面是我正在使用的
UISearchController
的子类

class SearchController: UISearchController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        DispatchQueue.main.async {
            if #available(iOS 13.0, *) {
                print()
                self.searchBar.tintColor = .richBlueTwo
                self.searchBar.barTintColor = .white
                self.searchBar.searchTextField.backgroundColor = .richBlueTwo
                self.searchBar.searchTextField.textColor = .white
            } else {
                self.searchBar.tintColor = .white
                self.searchBar.barTintColor = .white
                let searchTextField = self.searchBar.value(forKey: "searchField") as? UITextField
                searchTextField?.textColor = .white
                self.searchBar.setImage(UIImage(named: "iconSearch"), for: .search, state: .normal)
            }
        }
    }
}
以及
控制器
中的用法

private var searchController = SearchController(searchResultsController: nil)

override func viewDidLoad() {
    super.viewDidLoad()
    
    navigationItem.searchController = searchController
    navigationItem.hidesSearchBarWhenScrolling = false
    
}
我面临的问题是,最初加载并显示控制器时,这些更改在激活
UI搜索栏之前不会对UI产生任何影响。当点击或单击搜索栏时,颜色和图像会立即更改为已设置的颜色和图像

另一件奇怪的事情是,最初状态栏是
lightContent
。奇怪的是,以下序列一直在发生

  • ui搜索栏
    第一次被激活。状态栏保持白色
  • ui搜索栏
    resignedFirstResponder(取消、清除按钮或点击表格视图)。状态栏变为黑色文本
  • ui搜索栏
    再次激活。状态栏再次变为白色
  • 之后,每当激活状态栏时,状态栏内容为亮,否则为暗

  • 有什么猜测吗?

    尝试在
    视图中将出现
    功能中进行所有这些更改

    ***编辑:

    override func viewWillAppear(_ animated: Bool) {
            super.viewWillAppear(animated)
            view.addSubview(activityIndicator)
            searchBar.tintColor = .darkGray
            searchBar.placeholder = "Type movie title... "
            searchBar.barTintColor = .black
            navigationController?.navigationBar.barTintColor = .black
            navigationController?.navigationBar.tintColor = .white
            
            activityIndicator.hidesWhenStopped = true
            activityIndicator.center = view.center
        }
    

    尝试没有work@Faruk我编辑了我的答案,试着这样做。这对我来说很有效。我只是尝试了一下
    viewdide
    ,它成功了。我也会试试看。正如你所说,这项工作,我会接受这个答案。