我的应用程序在整个UI中都有蓝色色调主题。我的初始视图中的导航栏中还有一个嵌入式搜索栏。我的应用程序的按钮文本颜色为白色,并在应用程序委托中声明:
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
问题是,由于影响搜索栏的白色调,这会导致嵌入式搜索栏在选中时隐藏光标。我试图使用两种方法专门将搜索栏的色调设置为[UIColor blueColor],但没有运气。我试图引用UISearch栏的两种方式是:
[self.navigationController.searchDisplayController.searchBar setTintColor:[UIColor blueColor]];
和
[searchBar setTintColor:[UIColor blueColor]]
应该正确引用searchBar。
我对这些网点的任何操作都不会影响嵌入式搜索栏。
答案 0 :(得分:27)
在iOS 7(以及其他大概)中,您可能希望在导航和搜索栏上设置barTintColor
以更改包装UI颜色。
[searchBar setBarTintColor:[UIColor blueColor]]
对于相同的外观,您需要在iOS 7+中使用barTintColor
,并使用tintColor
进行更早的操作。如果您尝试在iOS 7中更改tintColor
,则会更改光标颜色,从而导致您提及的“隐藏”光标问题。
答案 1 :(得分:9)
有同样的问题。将搜索栏嵌入导航栏后,使用此代码解决了这个问题。
self.navigationItem.titleView.tintColor = [UIColor blueColor];
可能不是最好的解决方案,但它确实有效。
答案 2 :(得分:1)
如果您将其子类化,您还可以控制statusBarStyle。
import UIKit
class SearchController: UISearchController {
override func viewDidLoad() {
super.viewDidLoad()
searchBar.tintColor = UIColor.tintColor()
searchBar.barTintColor = UIColor.backgroundColor()
}
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .LightContent
}
}