如何从UISearchController更改UISearchBar中的文本颜色?

问题描述 投票:0回答:2

我有一个简单的问题:

为什么此代码不起作用?我以为新属性searchTextField将使自定义UISearchBar变得更加容易。

searchController.searchBar.searchTextField.textColor = .white

ios swift uitextfield uisearchcontroller ios13
2个回答
0
投票

您可以通过UITextField appearance属性进行设置。检查这行代码

 UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).defaultTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]

0
投票

我想它不起作用的原因可能是您得到的searchController.searchBar.searchTextField = nil

searchTextFieldiOS 13的新属性,如果仅支持>= iOS 13,则可以完成此操作。如果要适应iOS 13的先前版本,可以遍历UISearchBar查找UISearchBarTextField,然后直接设置找到的UISearchBarTextField

我查询的代码可能是这样的,我把它放在CategoryUIView中。

- (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];

这是我现在使用的,它正在起作用,希望对您有用。

© www.soinside.com 2019 - 2024. All rights reserved.