12

私のアプリでは、autolayout を使用して、bottomLayoutGuide から標準量のラベルを配置しました。アプリを最初に起動すると、すべてが思いどおりにレイアウトされますが、タブを切り替えて戻ると、タブ バー コントローラーの下にラベルが表示されなくなります。

デバイスを回転させると、横向きのビューが正しく表示され、縦向きに戻すと、ビューは通常に戻ります。何がこの動作を引き起こしているのか理解できないようです。ご協力いただきありがとうございます!

4

4 に答える 4

15

レオの答えはプログラムでそれを行う方法を示していますが、インターフェイスビルダーからこれを行う場合は、View Controller を選択し、[エッジの拡張] セクションから [下のバーの下] のチェックを外します。

画像

于 2014-02-20T18:46:39.383 に答える
0

Leo の言うとおりです。bottomLayoutGuide が正しく返されません。しかし、ボトムバーの下の拡張エッジを設定解除する(またはオーバーライドedgesForExtendedLayoutする) と、他のサブビューに望ましくない影響が多すぎました。

下部のレイアウト ガイドに従って 1 つのビューの制約のみを変更するviewWillLayoutSubviews場合は、プロパティの値を実装して確認し、bottomLayoutGuide必要に応じてその 1 つの制約を次のように調整します。

- (void)viewWillLayoutSubviews {
    [self adaptBottomLayoutGuides];
}

/// Workaround for iOS7 bug returning wrong bottomLayoutGuide length if this is 1st tab in TabViewController
- (void)adaptBottomLayoutGuides {
    NSLog(@"%f", self.bottomLayoutGuide.length);

    CGFloat expectedHeight = 123;
    CGFloat adaptedSpacing = expectedHeight - self.bottomLayoutGuide.length;
    self.viewBottomLayoutSpacingConstrain.constant = adaptedSpacing;
}
于 2013-11-13T15:03:40.657 に答える