在 iOS 9+ 中更改 UISearchBar 文本颜色

Posted

技术标签:

【中文标题】在 iOS 9+ 中更改 UISearchBar 文本颜色【英文标题】:Change UISearchBar text color in iOS 9+ 【发布时间】:2015-10-28 12:11:27 【问题描述】:

ios 7.x 中我们可以使用

[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil]
    setDefaultTextAttributes:@NSForegroundColorAttributeName:myColor];

但它在 iOS 9 中已被弃用。我知道的唯一解决方案是遍历 UISearchBar 的子视图层次结构,查找 UITextField 并更改其属性。但是这种方式被认为是Private API Usage

我们是否有合法方法来更改 iOS 9.x 中的 UISearchBar 文本颜色?

【问题讨论】:

不推荐使用它并不意味着您不能使用它(如果您对警告感到恼火,请参阅***.com/a/4133201/4062250)。 根本没有这种方法,至少在Swift中UIAppearance协议不包含这种方法:gist.github.com/OgreSwamp/d554536d8f747d618483 没想到...也许这会有所帮助:***.com/questions/24136874/… 迭代子视图层次结构根本不使用私有 API。你这样做是安全的。唯一的问题是层次结构可以随时更改。 【参考方案1】:

你现在需要使用 appearanceWhenContainedInInstancesOfClasses:

例如:

[[UITextField appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]] setTextColor:[UIColor whiteColor]];

【讨论】:

以上是关于在 iOS 9+ 中更改 UISearchBar 文本颜色的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 8 中更改 UISearchBar 取消按钮文本

如何在iOS7中更改UISearchBar的取消按钮的textColor?

如何在 iOS7 中更改 UISearchBar 的 inputView?

如何在 iOS7 中更改 UISearchBar 的背景颜色

如何在iOS上更改UISearchBar组件的内部背景颜色

如何在 iOS 7 的 UISearchBar 中更改位置或隐藏放大镜图标?