是否可以更改搜索栏的文字颜色?我似乎无法访问UISearchBarTextField类......
答案 0 :(得分:19)
首先,您在UISearchBar
中找到子视图,然后在子视图中找到UITextField
然后更改颜色
试试这段代码: -
for(UIView *subView in searchBar.subviews){
if([subView isKindOfClass:UITextField.class]){
[(UITextField*)subView setTextColor:[UIColor blueColor]];
}
}
for Ios 5 +
[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setTextColor:[UIColor blueColor]];
答案 1 :(得分:11)
从iOS 5开始,正确的方法是使用外观协议。
例如:
[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setTextColor:[UIColor blueColor]];
答案 2 :(得分:2)
您可以像这样设置属性,在控制器中调用它。
[[UITextField appearanceWhenContainedIn:[self class], nil] setDefaultTextAttributes:@{NSForegroundColorAttributeName:[UIColor whiteColor], NSFontAttributeName:[UIFont systemFontOfSize:14]}];
*请注意,这将更改控制器中的所有UITextField
答案 3 :(得分:2)
原始UISearchBar
层次结构自原始帖子以来已更改,UITextField
不再是直接子视图。以下代码不对UISearchBar
层次结构进行假设。
如果您不想在整个应用程序中更改搜索栏的文字颜色(例如使用appearanceWhenContainedIn),这也很有用。
/**
* A recursive method which sets all UITextField text color within a view.
* Makes no assumptions about the original view's hierarchy.
*/
+(void) setAllTextFieldsWithin:(UIView*)view toColor:(UIColor*)color
{
for(UIView *subView in view.subviews)
{
if([subView isKindOfClass:UITextField.class])
{
[(UITextField*)subView setTextColor:color];
}
else
{
[self setAllTextFieldsWithin:subView toColor:color];
}
}
}
用法:
[MyClass setAllTextFieldsWithin:self.mySearchBar toColor:[UIColor blueColor]];