在iOS 9及以上版本中更改UISearchBar文本颜色

5
在iOS 7.x中,我们可以使用
[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil]
    setDefaultTextAttributes:@{NSForegroundColorAttributeName:myColor}];

但在iOS 9中被弃用了。我所知道的唯一解决方案是迭代 UISearchBar 的子视图层次结构,查找 UITextField 并更改其属性。但这种方法被认为是私有API使用

那么,在iOS 9.x中我们是否有合法的方法来更改 UISearchBar 文字颜色呢?


虽然已经标为废弃,但这并不意味着你不能使用它(如果你对警告感到不爽,请参见https://dev59.com/GnE85IYBdhLWcg3wwWet#4133201)。 - deadbeef
根本就没有这样的方法,Swift的UIAppearance协议中根本不包含这样的方法:https://gist.github.com/OgreSwamp/d554536d8f747d618483 - OgreSwamp
没想到那个...也许这会有帮助: https://dev59.com/JmAf5IYBdhLWcg3w7mU_ - deadbeef
迭代子视图层次结构根本不使用私有API。您可以放心使用。唯一的问题是层次结构随时可能会更改。 - Ryan
1个回答

1
你现在需要使用appearanceWhenContainedInInstancesOfClasses:。
例如:
[[UITextField appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]] setTextColor:[UIColor whiteColor]];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接