24

現在、UISearchController をアプリケーションに埋め込もうとしています。ただし、UISearchController のプロパティである UISearchBar は、UINavigationBar が半透明でない場合、正しく表示されません。通常、UISearchBar プロパティをタップした後、UINavigationBar が上に移動して、UISearchBar 用のスペースを確保します。次のスクリーンショットで結果を確認できます。

https://www.dropbox.com/s/172k63zr2bhj84t/Normal_behaviour.png?dl=0

ただし、UINavigationBar の「translucent」プロパティが「NO」に設定されている場合、次のスクリーンショットでわかるように、ステータス バーの背景が透明のままであるため、UISearchBar は正しく表示されません。

https://www.dropbox.com/s/v5cnxoj9ms6976r/Wrong_behaviour.png?dl=0

この奇妙な動作を示すために、Apple から提供されたサンプル プロジェクトを変更しました。

https://developer.apple.com/library/ios/samplecode/TableSearch_UISearchController/Introduction/Intro.html

ここで、変更されたバージョンをダウンロードできます。

https://www.dropbox.com/s/7icfe6kap98g1e8/TableSearchwithUISearchControllerObj-CandSwift_MODIFIED.zip?dl=0

変更は、ファイル「APLMainTableViewController.m」の 33 行目です。

4

5 に答える 5

28

これは明らかにバグです ( rdar://20942583 )。

私の回避策は設定することです

self.edgesForExtendedLayout = UIRectEdgeAll;
self.extendedLayoutIncludesOpaqueBars = YES;

これにより、ナビゲーション バーを不透明に保つことができます。欠点は、コンテンツが表示されなくてもバーの下に流れ、オーバーヘッドが発生することです。

于 2015-05-13T21:56:27.710 に答える
12

必要だったのは次のとおりです。

func viewDidLoad() { 

    extendedLayoutIncludesOpaqueBars = true
}
于 2015-07-07T15:39:24.193 に答える
-1

誰かが非半透明のような問題を抱えている場合、検索バーを非表示にすることができます:

self.definesPresentationContext = true

よろしく

于 2016-08-08T15:01:08.933 に答える