レイアウトに問題があります。
IOS6での表示は次のとおりです。
IOS7での外観は次のとおりです。
でも、大丈夫です。 AppleのiOS7 TransitionGuide で説明したように、- (void)viewDidLoad
にもう1つストロークを書きました
self.edgesForExtendedLayout = UIRectEdgeNone;
そして、それは今このように見えます:
助言がありますか?レイアウトの何が問題になっていますか?青一色のUINavigationBarが必要です。そして、なぜこれの上部が透明であるのか分かりません。何かアイデアがありますが、なぜそれがそれほど奇妙に見えるのですか?どうすれば修正できますか?
navigationBar.translucent = NO;
をお試しください
デフォルトではYES
です。
UINavigationBar
ドキュメントから:
IOS 7での新しい動作。デフォルトはYESです。プロパティをNOに設定することで、不透明な背景を強制できます。ナビゲーションバーにカスタム背景画像がある場合、デフォルトは画像のアルファ値から推測されます。アルファ<1.0のピクセルがある場合はYES、不透明なカスタム背景画像があるバーにsetTranslucent:YESを送信すると、適用されます画像に対するシステム不透明度が1.0未満。半透明のカスタム背景画像のあるバーにsetTranslucent:NOを送信すると、バーのbarTintColorを使用して画像の不透明な背景が提供され、UIBarStyleBlackの場合は黒、barTintColorがnilの場合はUIBarStyleDefaultの場合は白になります。
この行を 'view will appear'メソッドに追加します(存在しない場合は、次のように入力して追加します:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animate];
}
)
次に、viewWillAppearの下部の[self viewWillAppear:]行の下に、次のコードを追加します。
if([self respondsToSelector:@selector(edgesForExtendedLayout)])
[self setEdgesForExtendedLayout:UIRectEdgeBottom];
これにより、上部のバー(ナビゲーションバー)が不透明になります。 iOS 7では、Nov Barが不透明に設定されているかどうかに応じてObj-Cの反応が異なります。これは、iOS 6と7の両方で機能することを保証するための良い方法です(次のようにいくつかの問題があります:
navigationBar.translucent = NO;
)
これが役に立てば幸いです。アプリをiOS 7に変換したときに同じ問題が発生し、解決策を見つけるまでに時間がかかりました。
IOS7では、UINavigationBarのスタイルはデフォルトで半透明なので、コンテンツを下に隠し、コンテンツを表示します。
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
if([self respondsToSelector:@selector(edgesForExtendedLayout)])
[self setEdgesForExtendedLayout:UIRectEdgeBottom];
}