2013-07-30 4 views

答えて

16

topLayoutGuidebottomLayoutGuideプロパティはUIViewControllerから継承され、UILayoutSupportプロトコルを実装しています。それらはAutoLayoutと一緒に使用するように設計されていますが、AutoLayoutを使用せずに直接使用することもできます。

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

topLayoutGuideの値は、ビューコントローラとそれが別のビューコントローラに含まれているかどうかに依存します。 AppleのUIViewControllerドキュメントから:

として、このプロパティの値はビューコントローラは、コンテナビュー コントローラの子は、(例えば、ナビゲーションやタブバーコントローラとして)であるか否か に依存制約オブジェクト

•コンテナビューコントローラ内にないビューコントローラは、このプロパティを表示する場合はステータスバーの下部を示すためにこのプロパティを制限し、ビューコントローラのビューの上端を示す場合は を指定します。

•コンテナビューコントローラ内のビューコントローラは、このプロパティを0に設定しません。 プロパティの値。もしのみ ナビゲーションバーは、ステータスバーの底

  • 表示されている場合、

    • ナビゲーションバーの底部:代わりに、コンテナビューコントローラが示す 値を制約します もステータスバーやナビゲーションバーが表示されている場合、ステータスバーは、

    • ビューコントローラのビューの上端見える

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

    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を使用して似ています。

    +0

    私はUIViewControllerのviewDidLoadでAutoLayoutを設定しています。私がCGFloatの長さ= self.topLayoutGuide.lengthを実行すると、私は値0を得ます。私はこのメッセージをどこで実装しますか? – AveLeon

    +20

    topLayoutGuideは動的に生成される値です。ビューコントローラのビューがビュー階層に追加された後でのみ使用することは意味があります。 viewDidLoadを使用すると、ビューがビュー階層に追加される前にtopLayoutGuideを読み取るため、0が返されます。UIViewControllerのサブクラス内でtopLayoutGuideを使用している場合、確実に使用できる最も初期の場所はviewDidLayoutSubviewsです。 UIViewのサブクラスで使用している場合は、layoutSubviewsを使用できます。 http://goo.gl/Tn6moX –

    +2

    ドキュメントで説明されているように、場合によってはtopLayoutGuideが0を返すことを指摘したいと思います。だから、あまりにも早くその価値観を読まないことが重要です。 –

    関連する問題