10

UISearchBarの小さな虫眼鏡アイコンに自分の画像を設定できるようにしたいと思います。できれば動かしたいです。何か案は?現在、iOS5以降のサポートのみが必要です。

4

6 に答える 6

34

iOS 5以降をサポートするアプリの場合、以下の方法を使用してこれを行うことができます。

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

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

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

于 2012-11-17T06:42:13.667 に答える
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##>}];
}
于 2014-04-07T08:59:56.457 に答える
2

Swiftの場合:-

UISearchBar.appearance().setImage(UIImage(named: "new_search_icon"), forSearchBarIcon: UISearchBarIcon.Search, state: UIControlState.Normal)
于 2016-02-10T12:23:58.247 に答える
0

使用する

- (void)setImage:(UIImage *)iconImage forSearchBarIcon:(UISearchBarIcon)icon state:(UIControlState)state;
于 2012-11-21T20:56:03.823 に答える
0

Swift5の場合

  searchBar.setImage(UIImage(named: "your_favicon"), for: .search, state: .normal)
于 2020-06-30T06:28:50.830 に答える
-2

すべてのサブビューを印刷してみてください...iOSに依存しません。

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

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

     UIImage *img = obj;
     [img setImage....];
  }
}
于 2012-11-17T07:48:42.257 に答える