在导航栏中为嵌入式UISearchbar设置色调颜色

时间:2013-11-12 22:37:24

标签: ios uinavigationcontroller ios7 uisearchbar

我的应用程序在整个UI中都有蓝色色调主题。我的初始视图中的导航栏中还有一个嵌入式搜索栏。我的应用程序的按钮文本颜色为白色,并在应用程序委托中声明:

    [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];

问题是,由于影响搜索栏的白色调,这会导致嵌入式搜索栏在选中时隐藏光标。我试图使用两种方法专门将搜索栏的色调设置为[UIColor blueColor],但没有运气。我试图引用UISearch栏的两种方式是:

    [self.navigationController.searchDisplayController.searchBar setTintColor:[UIColor blueColor]];

    [searchBar setTintColor:[UIColor blueColor]]

应该正确引用searchBar。

我对这些网点的任何操作都不会影响嵌入式搜索栏。

3 个答案:

答案 0 :(得分:27)

在iOS 7(以及其他大概)中,您可能希望在导航和搜索栏上设置barTintColor以更改包装UI颜色。

[searchBar setBarTintColor:[UIColor blueColor]]

对于相同的外观,您需要在iOS 7+中使用barTintColor,并使用tintColor进行更早的操作。如果您尝试在iOS 7中更改tintColor,则会更改光标颜色,从而导致您提及的“隐藏”光标问题。

Difference between tintColor and barTintColor on UISearchBar in iOS 7!

答案 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
    }
}

enter image description here