iOS - UIAppearance appearanceWhenContainedIn问题

Pet*_*rbo 7 cocoa-touch ios uiappearance

我正在为我的导航栏设置图像,如下所示:

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navbar.png"] forBarMetrics:UIBarMetricsDefault];
Run Code Online (Sandbox Code Playgroud)

然后我不希望这个图像的类,MFMessageComposeViewController所以我通过这样做排除它:

[[UINavigationBar appearanceWhenContainedIn:[MFMessageComposeViewController class], nil] setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
Run Code Online (Sandbox Code Playgroud)

但它没有任何效果(导航栏仍然使用我的图像进行样式设置MFMessageComposeViewController).我在这里错过了什么?

Pet*_*rbo 4

找到了我的问题的解决方案:

\n\n

子类化MFMessageComposeViewController

\n\n

在 init 方法中将backgroundImage的设置navigationBarnil

\n\n

瞧\xc3\xa1!

\n\n
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil\n{\n    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];\n\n    if (self) {\n        // Custom initialization\n        [self.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];\n\n    }\n    return self;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

  • 这似乎在 iOS 7 中没有效果 (2认同)