2

この問題は、1日以上私を苦しめています。私はUINavigationBarの高さを変更する必要があります。UINavigationBarの高さを変更するには

UINavigationControllerはAppDelegateのように作成されます。

self.navigationController = [[UINavigationController alloc] initWithRootViewController:mainController]; 
[self.window addSubview:self.navigationController.view]; 
[self.window makeKeyAndVisible]; 

ナビゲーションバーWILL変更の高さと、私が追加した場合固執[self.navigationController.navigationBar setFrame:NEWFRAME]以下のコードのようなにviewDidAppear。もつとも

- (void)viewWilAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    CGRect newFrame = CGRectMake(0, 0, 320, 100); 
    [self.navigationController.navigationBar setFrame:newFrame] 
} 

、私はこのようにそれを行う場合、あなたは実際にフレームが一瞬で100ピクセルの高さに、元44pxからスナップ見ることができる非常に迷惑であるビューロード、。

私が追加しようとした[ナビゲーションバーsetFrame:]のviewDidLoadrootViewControllerのviewWillAppearに、私はUINavigationControllerを開始した直後にもAppDelegate。これらの作品はありません。

UINavigationBarカテゴリのdrawRect :(CGRect)rectメソッドをオーバーライドして、下のコードを使用して背景色を黒くしていますが、問題とは関係ないと思います。

[[UIColor blackColor] set]; 
CGContextFillRect(UIGraphicsGetCurrentContext(), rect); 

これを行う最善の方法を知っている人はいますか?

答えて

1

"より大きなコントロールセットを提供する必要がある場合、またはナビゲーションを有効にする必要がない場合は、ナビゲーションバーの代わりにツールバーを使用してください。 - ナビゲーションバー/ガイドラインのiOS Human Interface Guidelinesより。

+4

実際にはナビゲーションを使用する必要があります。そのため、私はUINavigationControllerを使用しています。そうでなければ、カスタムツールバーを作成してビューに貼り付けることができました。 –

関連する問題