回転時にUINavigationBarのサイズを変更する
-
22-07-2019 - |
質問
UIViewを処理するUIViewControllerのサブクラスがあります。 ViewControllerはモーダルで表示されます(画面の下部から上にスライドします)。ビューの上部に、ナビゲーションバーを追加しました。このバーはNavigation Controllerによって処理されないことに注意してください。
ビューがランドスケープに回転するときにnavbarの高さを縮小させたい(UINavigationControllerで処理されたときの動作に似ている)。ただし、IBで自動サイズ変更マスクを柔軟な高さに設定することはできません。コードでこれを行うと、ナビゲーションバーが完全に消えます。
これを行う方法はありますか? UINavigationControllerによってどのように行われますか?
PSこれはタイトルのテキストを台無しにするので、スケーリング変換に頼る必要はありません。
編集:少し助けを借りて解決しました。下記の回答を読んでください。
解決 2
解決策を見つけましたが、後から考えるとかなり愚かです。 navbarの自動サイズ変更マスクに柔軟な下マージンを含める必要がありました。クレジットは、このスレッドのユーザーRayNewbieによるもので、ソリューションを示してくれました。
他のヒント
自動サイズ変更マスクを設定するのではなく、viewWillAppearおよびdidRotateFromInterfaceOrientationで現在の方向を確認して、適切なフレームを設定してみませんか?
- (void) updateNavBar {
UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
if ((UIInterfaceOrientationLandscapeLeft == orientation) ||
(UIInterfaceOrientationLandscapeRight == orientation)) {
myNavBar.frame = CGRectMake(0, 0, 480, 34);
} else {
myNavBar.frame = CGRectMake(0, 0, 320, 44);
}
}
- (void) viewWillAppear {
[self updateNavBar];
// ... SNIP ...
}
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
[self updateNavBar];
// ... SNIP ...
}
所属していません StackOverflow