7

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

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

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

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

    [searchBar setTintColor:[UIColor blueColor]]

应该正确引用 searchBar。

我对这些网点所做的一切都不会影响嵌入式搜索栏。

4

3 回答 3

27

在 iOS 7 下(可能是更高版本),您可能希望barTintColor在导航栏和搜索栏上进行设置以更改包装 UI 颜色。

[searchBar setBarTintColor:[UIColor blueColor]]

对于相同的外观,您将希望barTintColor在 iOS 7+ 中使用 when 并在tintColor更早的版本中使用。如果您尝试tintColor在 iOS 7 中进行更改,您将更改光标颜色,从而导致您提到的“隐藏”光标问题。

iOS 7 中 UISearchBar 上 tintColor 和 barTintColor 的区别!

于 2014-03-13T17:39:43.320 回答
10

有同样的问题。将搜索栏嵌入导航栏后使用此代码解决了这个问题。

    self.navigationItem.titleView.tintColor = [UIColor blueColor];

可能不是最好的解决方案,但它确实有效。

于 2013-11-14T11:27:34.653 回答
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
    }
}

在此处输入图像描述

于 2016-07-31T19:37:24.913 回答