アプリ デリゲート クラスに背景画像が設定された UINavigationBar があるので、Navigationbar を半透明にしたくない理由が想像できます。これが原因だと思います:http://imgur.com/v3e0NIo
とにかく、このコード行を入れると:
[[UINavigationBar appearance] setTranslucent:NO];
私の AppDelegate では、次のエラーが発生します。
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** Illegal property type, B for appearance setter, _installAppearanceSwizzlesForSetter:'
各クラスのすべての UINavigationbar を個別に非透明にしようとしても、画像に愚かな白いバーがまだ残っています! エラーはスローされませんが、コードが機能しないだけなのか、それとも透明性が問題ではないのか疑問に思います。
ありがとう!
編集:
これは、NavBar のカスタム背景を作成するために AppDelegate で使用しているコードです。
[[UINavigationBar appearance] setTitleTextAttributes: @{
UITextAttributeTextColor: [UIColor whiteColor],
UITextAttributeTextShadowColor: [UIColor blackColor],
UITextAttributeTextShadowOffset: [NSValue valueWithUIOffset:UIOffsetMake(0.0f, 1.0f)],
UITextAttributeFont: [UIFont fontWithName:@"Code-Bold" size:23.0f]
}];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault animated:NO];
UIImage *navBarImage = [[UIImage imageNamed:@"menubar.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(5, 15, 5, 15)];
[[UINavigationBar appearance] setBackgroundImage:navBarImage forBarMetrics:UIBarMetricsDefault];
UIViewController の背景を黒にしても、白いバーはまだそこにあります.透明度が私の問題であることを非常に疑っています!