2016-01-29 39 views
7

申し訳ありませんが、私はこれに8時間以上を費やしました。UISearchController検索バーの位置が64ポイント低下する

検索バーが低すぎる正確に64点を登場さ:

enter image description here

他のフレームのすべてが正確に正しいです。

編集: - UISearchControllerさんの表示が間違っていますorigin.yです。それは、私は、このメソッドを追加した場合、それは0 あるべき時に、64に設定されます:

- (void)didPresentSearchController:(UISearchController *)searchController 
{ 
    [super didPresentSearchController:searchController]; 
    searchController.view.frame = CGRectMake(0, 0, searchController.view.frame.size.width, searchController.view.frame.size.height); 

} 

その後景色が並びます。しかし、ジャンキーはジャンプするので。 willPresentSearchControllerのフレームを修正しても、コントローラーが表示された後に何らかの種類のレイアウトを実行しているに違いありません。

SparkInspectorを使用して、UISearchBarContainerViewのフレームを原点64(何を0に設定するか)から編集すると、問題は解決されます。私はインターフェイスBuilderを使用していない

​​

、すべてがコードに設定されています。

は、ここに私の関連する構成です。 definesPresentationContextの設定が正しいことが肯定的です。

VCは普通のUINavigationControllerであり、これはSplitViewController内にあります(ただし、iPhoneにも問題があります)。

アイデア? UINavigationBar

私はカスタムコンテナビューコントローラモデルを使用する別のコントローラも持っていますが、これはより複雑で動作します。だから今UISearchBarが正しく配置されます enter image description here

を、しかし、プレゼンテーションコンテキストは、完全なビューを占めるようにUISearchControllerのテーブルビューを引き起こし、間違っている:私は

self.definesPresentationContext = NO; 

を設定すると

これが起こります。あなたのtableViewは、カスタムのUITableViewとないのUITableViewControllerあなたがトップを非表示にする場合には

- (UIBarPosition)positionForBar:(id<UIBarPositioning>)bar 
{ 
    if (bar == self.searchController.searchBar) { 
    return UIBarPositionTopAttached; 
    } 
    else { // Handle other cases 
    return UIBarPositionAny; 
    } 
} 
+0

ご質問いただきありがとうございます。 それは助けました。自己。definedPresentationContext = NO; – Coder

答えて

10

、私は解決策(https://stackoverflow.com/a/30010473/579217

を見つけたこれは、トリックを行いますナビゲーションバーのテーブルビューは、テーブルバーのヘッダに自動的に付けられ、ナビゲーションバーの下でテーブルビューが開始されるため、この問題が発生します。ナビゲーションバーの上からテーブルビューをフルスクリーンにするだけです。

0

古典的な方法で、まあ
+0

私のテーブルビューはカスタムですが、ヘッダービューの代わりにtableviewのcontentInsetsを使用して手動で検索バーを付けます。なぜなら、常に表示したいからです。以前はナビゲーションバーを非表示にしていましたが、それは気が散っていましたが、私は個人的にはナビゲーションバーを見えるようにしたいので、ユーザーはすぐに他のアクションにアクセスできます。 – JBlake

+0

したがって、テーブルビューがカスタムである場合、その内部にテーブルビューの前に検索バーを追加するだけです。検索バーの下にテーブルビューを追加し、検索バーの下のテーブルビューのヘッダーを非表示にします。それはあなたがそれを望むようになります:) – rmammadli

関連する問題