我有一个简单的问题:
为什么此代码不起作用?我以为新属性searchTextField
将使自定义UISearchBar
变得更加容易。
searchController.searchBar.searchTextField.textColor = .white
您可以通过UITextField
appearance
属性进行设置。检查这行代码
UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).defaultTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
我想它不起作用的原因可能是您得到的searchController.searchBar.searchTextField = nil
。
searchTextField
是iOS 13
的新属性,如果仅支持>= iOS 13
,则可以完成此操作。如果要适应iOS 13
的先前版本,可以遍历UISearchBar
查找UISearchBarTextField
,然后直接设置找到的UISearchBarTextField
。
我查询的代码可能是这样的,我把它放在Category
的UIView
中。
- (UIView *)findChildViewClass:(Class)childViewClass fromView:(UIView *)fromView{
for (UIView *subView in fromView.subviews) {
if ([subView isMemberOfClass:childViewClass]) {
return subView;
}
UIView *finalView = [self findChildViewClass:childViewClass fromView:subView];
if (finalView) {
return finalView;
}else{
continue;
}
}
return nil;
}
使用时,您可以自定义searchTextField
属性以从UITextField
继承以保存找到的值。
_searchTextField = (UITextField *)[searchBar findChildViewClass:NSClassFromString(@"UISearchBarTextField") fromView: searchBar];
这是我现在使用的,它正在起作用,希望对您有用。