7

検索バーを実装しましたが、検索バーの色を変更したいと考えています。どうやってやるの?

私は試してみました:

self.mySearchBar.backgroundColor = [UIColor redColor];

しかし、成功しませんでした。

更新 (解決済み):

次のコードで背景色を定義する前に、デフォルトの背景色を削除する必要がありました。

for (UIView *subview in mySearchBar.subviews) {
    if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) {
        [subview removeFromSuperview];
        break;
    }
} 

...コードは次のようになります:

  for (UIView *subview in mySearchBar.subviews) {
      if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) {
          [subview removeFromSuperview];
          break;
      }
  } 

  self.mySearchBar.backgroundColor = [UIColor redColor];
4

9 に答える 9

29

試す:

self.mySearchBar.barTintColor = [UIColor redColor];
于 2013-12-12T07:37:16.977 に答える
6
self.mySearchBar.backgroundColor = [UIColor redColor]; 

何もしません、

しかし

self.mySearchBar.tintColor = [UIColor redColor]; 

意思!

于 2013-01-19T11:11:11.030 に答える
3
    self.mySearchBar.backgroundVolor = [UIColor redColor];

「Volor」または「Color」

  self.mySearchBar.backgroundColor = [UIColor redColor];

また、色を付けたい場合:

ドキュメントによると: https://developer.apple.com/iphone/library/documentation/UIKit/Reference/UISearchBar_Class/Reference/Reference.html、 UISearchBar クラスに tintColor プロパティがあります。

TableSearch の例: https://developer.apple.com/library/ios/#samplecode/TableSearch/検索バーが定義され、MainView.xib に読み込まれます。tintColor やスタイルを変更したい場合は、xib で変更するだけで、アプリケーションに読み込まれます。

しかし、背景色を変更する唯一の本当の方法は、それを上書きすることです。次の質問の答えを見てください

UISearchBar の背景色のクリアまたは背景画像の設定 [iphone sdk]

于 2012-05-10T11:28:40.423 に答える
2

iOS7 から変更されたかどうかはわかりませんが、UISearchBarBackground ビューを適切に削除するには、検索ディスプレイ コントローラーの検索バーに余分なループが必要なようです。

検索バーを適切に消去するための再帰メソッドを作成しました。

- (void) removeUISearchBarBackgroundInViewHierarchy:(UIView *)view
{
    for (UIView *subview in [view subviews]) {
        if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) {
            [subview removeFromSuperview];
            break; //To avoid an extra loop as there is only one UISearchBarBackground
        } else {
            [self removeUISearchBarBackgroundInViewHierarchy:subview];
        }
    }
}

検索バーをメソッドに送信するだけで、後で色を変更できます。これは、上記の提案された回答と少し似ています。

[self removeUISearchBarBackgroundInViewHierarchy:self.searchDisplayController.searchBar];
self.searchDisplayController.searchBar.backgroundColor = yourUIColor;
于 2014-03-13T14:06:05.117 に答える
1
searchBar.barTintColor =  UIColor.redColor()
于 2015-01-16T19:50:19.427 に答える
0

上下の行に問題がある場合は、UISearchBarBackground を削除してみてください。

self.searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, 50)];

for (UIView *subview in self.searchBar.subviews) {
    if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) {
        [subview removeFromSuperview];
        break;
    }
    for (UIView *subsubview in subview.subviews) {
        if ([subsubview isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) {
            [subsubview removeFromSuperview];
            break;
        }
    }
}

self.searchBar.barTintColor = [UIColor redColor];
self.searchBar.backgroundColor = [UIColor redColor];
于 2015-10-22T16:21:14.767 に答える
0

このコードを試してみてください。私にとってはうまくいきます。

for( UIView* v in [parent subviews] ) { 
if( [v isKindOfClass:[UISearchBar class]] ) {
  [(UISearchBar*)v  setTintColor:[UIColor blackColor]];
}
于 2012-05-10T11:30:50.763 に答える