私のアプリでは、autolayout を使用して、bottomLayoutGuide から標準量のラベルを配置しました。アプリを最初に起動すると、すべてが思いどおりにレイアウトされますが、タブを切り替えて戻ると、タブ バー コントローラーの下にラベルが表示されなくなります。
デバイスを回転させると、横向きのビューが正しく表示され、縦向きに戻すと、ビューは通常に戻ります。何がこの動作を引き起こしているのか理解できないようです。ご協力いただきありがとうございます!
私のアプリでは、autolayout を使用して、bottomLayoutGuide から標準量のラベルを配置しました。アプリを最初に起動すると、すべてが思いどおりにレイアウトされますが、タブを切り替えて戻ると、タブ バー コントローラーの下にラベルが表示されなくなります。
デバイスを回転させると、横向きのビューが正しく表示され、縦向きに戻すと、ビューは通常に戻ります。何がこの動作を引き起こしているのか理解できないようです。ご協力いただきありがとうございます!
レオの答えはプログラムでそれを行う方法を示していますが、インターフェイスビルダーからこれを行う場合は、View Controller を選択し、[エッジの拡張] セクションから [下のバーの下] のチェックを外します。
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;
}