2017-04-07 9 views
0

通常のUIViewControllerでUISearchControllerを実装しましたが、私は奇妙な問題があります。UISearchController searchBarフレームは、最初のクリックでのみサイズが変更されます

私は自分のUISearchBarに必要なサイズに正確に適応したUIViewを持っています。ビューの最初の起動時に、私はUISearchBarをこのUIViewにサブビューとして追加します。 しかし、私はそれを起動すると、UISearchBarは、親UIViewのサイズを取らない - それは画面全体の幅を取るだけです。

enter image description here

あなたが見ることができるように、それは右のボタンと重なっています。

しかし、一度検索バーをクリックしてキャンセルすると、私は望むサイズにリサイズします。ここで問題になる可能性がどのような

enter image description here

? AutoLayout ConstraintsをSearchBarから親ビューに追加しようとしましたが、何も変更されていないようです。 [UIView addSubview:]はこれを処理しませんか?

答えて

1

UISearchControllerのビューの動作は本当に奇妙ですが、簡単な回避策があります。

  • 追加のコンテナビューを使用し
  • UIViewAutoresizingFlexibleWidthへ
  • セットUISearchControllerのビュー自動サイズ変更マスクの内側UISearchControllerのビューを置きます| UISearchController.viewがcontainer.boundsを超えてサイズを変更しません。この時点でUIViewAutoresizingFlexibleHeight
  • コンテナのビューの境界に
  • セットUISearchControllerのフレームを

+0

あなたのメッセージをありがとう!私は正確に理解できません - これは私が今やっていることです、そうですか?私は既にSearchBarをコンテナに追加しています! –

+0

現時点であなたのコンテナが正しく理解されていれば、uiseachcontroller.viewがサブビューとして追加されている最上位のビューコントローラ(別名visibleVC.view)のビューです。私が示唆しているのは、visibleVC.viewのサブビューとして追加のコンテナビュー(画面の幅80%とuiseachcontroller.viewに等しい高さ)を追加することです。次に、この新しく作成されたコンテナビューにuisearchcontrollerビューを追加します。 –

+0

私は既に2番目の画像にUISearchBarの正確なサイズを持つコンテナビューを持っています。これはUISearchControllerも追加するUIViewです。だから私はそれを理解していないのです - 一度クリックすると動作しますが、最初の起動時には動作しません。 –

関連する問題