IOS7で導入されたUITableViewControllerのtopLayoutGuideプロパティとbottomLayoutGuideプロパティの使用方法を誰かに教えてもらえれば幸いです。ありがとうございます。
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
がコンテンツの最小の垂直範囲を参照する点が異なります。