web-dev-qa-db-ja.com

topLayoutGuideおよびbottomLayoutGuideUIViewControllerプロパティの例

IOS7で導入されたUITableViewControllerのtopLayoutGuideプロパティとbottomLayoutGuideプロパティの使用方法を誰かに教えてもらえれば幸いです。ありがとうございます。

15
AveLeon

topLayoutGuideおよびbottomLayoutGuideプロパティは、 IViewController から継承され、 ILayoutSupport プロトコルを実装します。これらはAutoLayoutで使用するように設計されていますが、AutoLayoutを使用せずに直接使用することもできます。

topLayoutGuideの場合、プロパティは、半透明または透明のUIKitバー(ステータスバーやナビゲーションバーなど)の背後に表示したくないコンテンツの最大の垂直範囲を示します。したがって、ViewControllerがUINavigationControllerスタックにプッシュされている場合、topLayoutGuideは、画面の上部からステータスバーとナビゲーションバーがカバーするポイントの数を示します。この値を使用して、UIScrollViewのコンテンツをナビゲーションバーのすぐ下にスクロールするか、ビュー内の他のコンテンツがUINavigationBarでカバーされていないことを確認できます。

topLayoutGuideの値は、View Controllerと、それが別のViewControllerに含まれているかどうかによって異なることに注意してください。 AppleのUIViewControllerドキュメントから:

このプロパティの値を制約するオブジェクトは、次のように、ビューコントローラーがコンテナービューコントローラー(ナビゲーションやタブバーコントローラーなど)の子であるかどうかによって異なります。

•コンテナViewController内にないViewControllerは、このプロパティを制約して、ステータスバーの下部が表示されている場合はそれを示し、そうでない場合はViewControllerのビューの上端を示します。

•コンテナViewController内のViewControllerは、このプロパティの値を設定しません。代わりに、コンテナビューコントローラは値を制約して次のことを示します。

  • ナビゲーションバーが表示されている場合は、ナビゲーションバーの下部

  • ステータスバーのみが表示されている場合は、ステータスバーの下部

  • ステータスバーもナビゲーションバーも表示されていない場合は、ViewControllerのビューの上端

これは、キーボードの表示に応じてUITextFieldを移動するために使用するコードです。テキストフィールドをナビゲーションバーのすぐ下に移動します。

CGFloat length = self.topLayoutGuide.length;
_feedback.frame = CGRectMake(_feedback.frame.Origin.x, length + 5.0, _feedback.frame.size.width, _feedback.frame.size.height);

bottomLayoutGuideの使用は、topLayoutGuideの使用とまったく同じですが、bottomLayoutGuideがコンテンツの最小の垂直範囲を参照する点が異なります。

16
Stephen Melvin