2

コードの viewDidLoad メソッドで次のように設定したカスタム背景を持つ UINavigation バーがあります。

UIImage *image = [UIImage imageNamed:@"V2_navbar"];
[self.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];

iOS 5 では、結果は次のようになりました。

ここに画像の説明を入力

iOS 6 では、結果は次のようになります。

ここに画像の説明を入力

1 つには、ステータス バーが黒くなりましたが、これで問題ありません。しかし、2 番目の画像をよく見ると、ナビゲーション バーの上部の角が丸くなっていることがわかります。これは見た目が悪いです。

これを修正する方法を知っている人はいますか?

4

1 に答える 1

2

簡単な実験に基づいて...

回避策として、プロジェクト設定でステータスバーのスタイルを黒の半透明に設定するだけです。これには、ステータスバーの後ろの領域を含む画面全体が表示されるという正味の効果がありますUIWindow。3.5インチデバイスでは、ウィンドウは460ポイントではなく480ポイントになります。ただし、ビューコントローラが設定wantsFullScreenLayoutされていない限り、ウィンドウはYESペイントされません。エリアとそれは黒の不透明と同じように見えます。

コードがプログラムでステータスバーのスタイルをどこかに設定している場合は、おそらくそれを無効にする必要があります。

編集:Matt.Zの懸念に答えるために... Appleは、画面の端にある丸い角が好きなデザイナーがいるため、丸い角を追加しました。オリジナルの1984年のMacintoshデスクトップは、四隅すべてにそれらがあり、OS 9まで存続しましたが、OS Xは元々それらを上部の2つの隅に保持していましたが、10.5で消滅しました。

この場合、それらは逆の方向に進んでいるようで、iOS 5と6の間の「ディスプレイの端」に丸みを帯びた角を追加することを決定しました。したがって、Appleによって純粋に美的理由で追加されました。

設定wantsFullScreenLayoutするYESことにより、アプリケーションがフルスクリーンとして使用できる領域をステータスバーの真下まで拡張し、「ディスプレイの端」がナビゲーションバーの上部でなくなるようにします。Appleは、表示領域の中央からチャンクを切り取ってアプリを壊したくないので、iOSはコーナーを追加しません。

于 2012-09-27T01:15:41.757 に答える