私のアプリには、標準の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のサブクラスにあります。
本当にありがとう!