8

アプリ デリゲート クラスに背景画像が設定された 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 の背景を黒にしても、白いバーはまだそこにあります.透明度が私の問題であることを非常に疑っています!

4

2 に答える 2

5

これを入力して、viewdidload代わりに各 viewcontrollers クラスに配置します。

    self.navigationController.navigationBar.translucent = NO;
于 2013-10-13T19:02:51.233 に答える