5

と がUITableView追加searchbarされていsearchDisplayControllerます。

アプリ全体で半透明性をオフにしたいと考えています。

ナビゲーション バーとその他のバーの半透明性をオフにしていますが、ディスプレイ コントローラーを使用する場合は検索バーはオフにしています。アプリの一部で、ディスプレイ コントローラーではなく検索バーを使用すると、半透明度が正しく設定されます。

UISearchBarディスプレイ コントローラの半透明プロパティを NO に設定するにはどうすればよいですか?

編集:これは私のコードですviewDidLoad

self.navigationController.navigationBar.translucent = NO;
BOOL t = self.searchDisplayController.searchBar.translucent;
self.searchDisplayController.searchBar.translucent = NO;
self.navigationController.navigationBar.barTintColor = [UIColor redColor];
self.searchDisplayController.searchBar.barTintColor = [UIColor redColor];
UIBarStyle b1 = self.searchDisplayController.searchBar.barStyle;
UISearchBarStyle b2 = self.searchDisplayController.searchBar.searchBarStyle;
BOOL t2 = self.searchDisplayController.searchBar.translucent;

デバッガーで実行すると、t = YES および t2 = YES になります。b1 =UIBarStyleDefaultおよび b2 = UISearchBarStyleDefault. 間違った場所に NO を設定していますか? storyboardとここで設定を試しましたviewDidLoad

4

2 に答える 2

8

UISearchBarStyleProminent の場合:

1) 属性インスペクタの検索バーの「半透明」ボックスを必ずチェックしてください。

2) 以下を viewDidLoad に追加します。

self.navigationController.navigationBar.translucent = NO; // If you have a navBar
self.searchDisplayController.searchBar.translucent = NO;

@RudolfAdamkovicから編集

UISearchBarStyleProminent「 forを実行すると [the following] が役立つことがわかりました。そうすれば、Storyboard でそれを維持できます。」
searchBar.translucent = YES;
searchBar.translucent = NO;

UISearchBarStyleMinimal の場合:

最小限の検索バーが半透明にならないようにするために、回避策をまとめました。

1) 属性インスペクタの検索バーの「半透明」ボックスを必ずチェックしてください。

2) 次のコードを viewDidLoad に追加します。

self.navigationController.navigationBar.translucent = NO;
self.searchDisplayController.searchBar.translucent = NO;
self.searchDisplayController.searchBar.backgroundColor = [UIColor desiredColor];

3) UIView を viewController に追加する必要があります。このビューの高さは 20 ピクセルで、searchBar.barTintColor と同じ色にする必要があります。

注:スタイル UISearchBarStyleMinimal はデフォルトの背景色または画像を提供しませんが、カスタマイズされた場合は表示されます。」したがって、UISearchBarStyleMinimal でこの機能を取得する唯一の方法は、backgroundColor を設定することです。

詳細については、UISearchBarのドキュメントを参照してください。

于 2013-09-25T18:14:54.593 に答える
1

上記の回答はどれも、iOS 7/8 ではうまくいきませんでした。トリックを行ったセットアップコードを次に示します。

searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.view.frame), 44)];
searchBar.scopeButtonTitles = @[@"Scope1", @"Scope2"];
searchBar.selectedScopeButtonIndex = 0;
searchBar.backgroundColor = [UIColor clearColor];
searchBar.barTintColor = [UIColor clearColor];
searchBar.translucent = YES; // SUPER IMPORTANT, REMOVING THIS MESSED UP THE SCOPE BAR

// ONLY USE IMAGES, NOT BACKGROUND COLORS
UIImage *searchBarBackgroundImage = [[UIImage imageNamed:@"SearchBarBackgroundImage"];
UIImage *scopeBarBackgroundImage = [[UIImage imageNamed:@"ScopeBarBackgroundImage"];
[searchBar setBackgroundImage:searchBarBackgroundImage
               forBarPosition:UIBarPositionAny
                   barMetrics:UIBarMetricsDefault];
searchBar.scopeBarBackgroundImage = scopeBarBackgroundImage;
searchBar.tintColor = [UIColor whiteColor];
于 2014-11-03T19:16:46.847 に答える