現在、ios7 が登場するまで問題なく動作していたアプリに取り組んでいます。以前は検索バーが透明で、ナビゲーション バーの青色の背景に溶け込んでいました。現在、ios7 で作業しているため、ナビゲーション バーは青色ですが、検索バーの背景は灰色になっています。青または透明にするにはどうすればよいですか?
ここに画像があります:
現在、ios7 が登場するまで問題なく動作していたアプリに取り組んでいます。以前は検索バーが透明で、ナビゲーション バーの青色の背景に溶け込んでいました。現在、ios7 で作業しているため、ナビゲーション バーは青色ですが、検索バーの背景は灰色になっています。青または透明にするにはどうすればよいですか?
ここに画像があります:
これを試して:
if(IOS_7)
{
self.searchBar.searchBarStyle = UISearchBarStyleMinimal;
}
Interface Builder (.xib) で "Bar Tint" を "Clear Color" に設定できます。
コードでも実行できます。
self.searchBar.barTintColor = [UIColor clearColor];
単色にするには、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;
**編集-これはiOS 7でうまくいきました
// Set the color to whatever blue color that is in your screenshot
self.searchBar.backgroundImage = [UIImage imageWithColor:[UIColor redColor] cornerRadius:5.0f];
すべての検索バーを特定の色にしたい場合は、次のようにします。
// Put this in your app delegate's didFinishLaunchingWithOptions method
// Whatever color you want for searchBarColor
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) { // For iOS 7
UIColor *searchBarColor = [UIColor blueColor];
[[UISearchBar appearance] setBackgroundColor:searchBarColor];
}
その特定の検索バーの背景を色にしたいだけの場合:
// Set it in your viewDidLoad method of your controller
// Replace the yourSearchBar property with whatever you're doing to instantiate the search bar
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) { // For iOS 7
{
UIColor *searchBarColor = [UIColor blueColor];
self.yourSearchBar.backgroundColor = searchBarColor;
}