3

私のアプリには、標準のApple UINavigationController UINavigationBarの44ピクセルとは対照的に、59(仮想)ピクセルの高さのカスタムナビゲーションバーがあります。アプリの起動時に次の呼び出しでバーにスタイリングを適用しています。

UIImage *navBarImage = [UIImage imageNamed:@"navigation-bar.png"];
[[UINavigationBar appearance] setBackgroundImage:navBarImage
                                   forBarMetrics:UIBarMetricsDefault];

これがもたらす問題は、基本的に、標準のナビゲーションバーの原点で画面の上部に表示される画像であるということです。基になるナビゲーションバーは、そのサイズが変更されたことを認識していません。これにより、コンテンツビュー(ナビゲーションスタックにプッシュされたビュー)がカスタムバーの下に15ピクセル表示されます。

UINavigationControllerのナビゲーションビューのサイズと位置を変更する方法が見つかりませんでした。

このカスタマイズを説明する最も洗練された方法は何ですか?次の(エレガントではありません)動作しますが、ビューがレンダリングされた後に操作が適用されるため、位置のシフトとサイズ変更はユーザーに非常にわかりやすく、かなり素人っぽく見えます。

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    CGRect frame = self.view.frame;
    self.view.frame = CGRectMake(frame.origin.x, frame.origin.y + 15, frame.size.width, frame.size.height - 15);
}

ナビゲーションスタックにプッシュされたすべてのコントローラーは、上記のメソッドを実装するUIViewControllerのサブクラスにあります。

本当にありがとう!

4

1 に答える 1

5

これが古いことは知っていますが、答えが得られなかったので、この問題をどのように解決したかを投稿できると思いました.

同様の質問を投稿しましたが、あなたのものに加えて別の問題がありました。UINavigationBar の高さを設定する方法に関する質問を指摘されましたが、一番上の答えは私にとって完璧に機能しました。ユーザーは、カスタム UINavigationBar カテゴリを作成し、-sizeThatFits メソッドをオーバーライドすることを提案しています。アプリが UINavigationBar の高さの増加を認識しないという問題と、UINavigationBar のビューがデフォルトの 44px のボトム ラインより下でクリックできないという追加の問題も解決します。

于 2013-02-09T10:30:00.417 に答える