2012-11-17 10 views
10

UISearchBarの小さな虫めがねアイコンのために私自身のイメージを設定したいと思っています。私はまた、可能ならばそれを動かすことができるようにしたいと思います。何か案は?現在のところ、iOS5以上のサポートのみが必要です。以降のiOS 5をサポートしたアプリについてはUISearchBarの虫めがねアイコンを変更する

+0

@ACBは親切にも私がコメントで追加された質問としてこれを尋ねたUISearchBarについて持っていた別の投稿でこれを答えることでした。 "(UIImage *)iconImage forSearchBarIcon:(UISearchBarIcon)アイコンの状態:(UIControlState)これは、状態;" –

答えて

34

、あなたはこれを行うには、以下の方法を使用することができ、

- (void)setImage:(UIImage *)iconImage forSearchBarIcon:(UISearchBarIcon)icon state:(UIControlState)state; 

UIControlStateNormalUIControlStateDisabledは、検索バーのための2つの可能な状態です。

これ以前にOSバージョンを使用しているアプリの場合、これは動作しません。 UISearchbarにカテゴリを作成し、サブビューを列挙してアイコンを変更する必要があります。

+0

怠け者であるか、もう少し明確にしたい人のために(例えば、これはUISearchBarのメソッドです): '[self.searchController.searchBar setImage:[UImage imageNamed:@" YourImageHere "forSearchBarIcon:UISearchBarIconSearch state:UIControlStateNormal ]; ' または他にあなたの検索コントローラ/バーがあるところ – gadu

-2

tryすべてのサブビューを印刷してください... iOS固有の

for (id obj in _SearchBar.subviews) { 
    NSLog(@"%@", obj); 

    if ([obj isKindOfClass:[UIImage class]]) { 
    NSLog(@"probably found..."); 

    UIImage *img = obj; 
    [img setImage....]; 
    } 
} 
0

使用

- (void)setImage:(UIImage *)iconImage forSearchBarIcon:(UISearchBarIcon)icon state:(UIControlState)state; 
13

あなただけのデフォルトの拡大アイコンの色を変更したい場合は、テンプレートモードを使用する画像を設定し、画像表示のtintColorを設定することができます。スウィフトのために

if ([view isKindOfClass:[UITextField class]]) { 
    UITextField *textField = (id)view; 

    UIImageView *iconView = (id)textField.leftView; 
    iconView.image = [iconView.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; 
    iconView.tintColor = <##dimmedColor##>; 

    // other styling: 
    textField.font = <##font##>; 
    textField.textColor = <##activeColor##>; 
    textField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:<##searchBar##>.placeholder 
                     attributes:@{NSForegroundColorAttributeName: <##dimmedColor##>}]; 
} 
+0

imageWithRenderingModeがキーでした。一見してそれを逃した! –

2

: -

UISearchBar.appearance().setImage(UIImage(named: "new_search_icon"), forSearchBarIcon: UISearchBarIcon.Search, state: UIControlState.Normal) 
関連する問題