6

与えられた問題

ナビゲーションバー、検索バー、テーブルビューを含む次のビューがあります-左の画像は私が持っている特定のビューであり、右の画像は私が達成したいものです-基本的にはナビゲーションバーを非表示にしてすべてのサイズを変更します。

与えられた 欲しかった

現在のソリューション

現在、検索ボックスからスーパービューのトッププロパティまでの垂直方向のスペースの制約を使用して、すべてを非表示にし、サイズを変更することができました-

  • デフォルトの制約定数は44(ナビゲーションバーの高さ)です。
  • 検索ボックスをクリックした後、ナビゲーションバーを非表示にし、制約定数を0に設定します
  • 検索を停止すると、ナビゲーションバーを復元し、制約を44に再度設定します

垂直制約

欲しいもの

ナビゲーションバーを非表示にし、検索ボックスとテーブルのサイズを変更して画面全体に表示する最も簡単な方法を探しています。

それを実行してiOS6自動レイアウトシステムを利用する方法はありますか?

私の現在の解決策は不自然に感じます。

4

2 に答える 2

6

それが変更する必要がある唯一の制約である場合は、その1つの制約のIBOutletをViewまたはView Controllerに作成し、変更が必要な時期に基づいて制約を変更するだけです。

if(shouldHide){
  self.nibTitleBarConstraint.constant = 0.f;
}
else{
  self.nibTitleBarConstraint.constant = 44.f;
}

-layoutIfNeeded変更をアニメーション化する場合は、アニメーションのコンテキストに固執するだけです。

[UIView animateWithDuration:0.33f
                 animations:^{
                   [view layoutIfNeeded];
                 }];

これは、他の制約がそのビューの制約の変更に対応する方法を知っている限り、変更する制約の定数(高さ、上部スペースなど)に適用できます。

于 2012-10-30T19:52:32.433 に答える
1

あなたはただ:

[[self navigationController] setNavigationBarHidden:YES animated:NO];
于 2012-10-29T15:23:10.387 に答える