8

検索バーのテキストの色を変更することはできますか?UISearchBarTextFieldクラスにアクセスできないようです...

4

4 に答える 4

19

まず、でサブビューを見つけUISearchBar、次にサブビューで見つけてUITextField色を変更します

このコードを試してください:-

 for(UIView *subView in searchBar.subviews){
            if([subView isKindOfClass:UITextField.class]){
                [(UITextField*)subView setTextColor:[UIColor blueColor]];
            }
        }

iOS5+の場合

[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setTextColor:[UIColor blueColor]];
于 2012-05-23T11:34:25.430 に答える
11

iOS 5以降、これを行う正しい方法は、外観プロトコルを使用することです。

例えば:

[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setTextColor:[UIColor blueColor]];
于 2013-08-15T06:07:55.760 に答える
2

このように属性を設定することができます。これをコントローラーで呼び出します。

[[UITextField appearanceWhenContainedIn:[self class], nil] setDefaultTextAttributes:@{NSForegroundColorAttributeName:[UIColor whiteColor], NSFontAttributeName:[UIFont systemFontOfSize:14]}];

*これにより、コントローラー内のすべてのUITextFieldが変更されることに注意してください

于 2014-09-04T12:45:19.073 に答える
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]];
于 2016-07-01T12:57:55.667 に答える