7

UIView を処理する UIViewController のサブクラスがあります。ビューコントローラーはモーダルに表示されます (画面の下から上にスライドします)。ビューの上部に、ナビゲーション バーを追加しました。このバーは、ナビゲーション コントローラーによって処理されないことに注意してください。

ビューが横向きに回転するときにナビゲーションバーの高さを縮小したい (UINavigationController によって処理されるときの動作と同様)。ただし、IB で自動サイズ変更マスクを柔軟な高さに設定することはできません。コードでこれを行うと、ナビゲーション バーが完全に消えてしまいます。

これを行う方法はありますか?UINavigationController によってどのように行われますか?

PS タイトルのテキストが台無しになるため、スケーリング変換に頼る必要はありません。

編集:少し助けて解決しました。以下に投稿された回答を読んでください。

4

2 に答える 2

5

自動サイズ変更マスクを設定するのではなく、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 ...
}
于 2009-12-01T13:38:44.520 に答える
1

私は解決策を見つけました、そして後から考えると私はかなり愚かだと感じます。ナビゲーションバーの自動サイズ変更マスクに柔軟な下部マージンを含める必要がありました。クレジットは、このスレッドのユーザーRayNewbieによるもので、解決策を示しました。

http://discussions.apple.com/thread.jspa?messageID=8295525

于 2009-12-03T07:32:51.050 に答える