我的应用程序中的导航控制器中有一个自定义的navBar图像,使用UIAppearance协议进行设置。但是,当通过应用程序发送邮件时(通过MFMailComposeViewController
),我想要默认的navBar而不是自定义的navBar。我尝试了这个问题中概述的方法:UIAppearance Remove Custom NavBar Background for UIPopoverController但它没有用。我使用的代码是:
[[UINavigationBar appearanceWhenContainedIn:[MFMailComposeViewController class], nil] setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
但它没有任何效果。我的应用程序是iOS 6+。这是MFMailComposeViewController
特有的,还是我错过了什么?
编辑:尝试了其他方法:
MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init];
mailer.mailComposeDelegate = self;
mailer.navigationBar.barStyle = UIBarStyleBlack;
[self.navigationController presentViewController:mailer animated:YES completion:nil];
[mailer.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
设置UIBarStyleBlack
会产生一些影响,因为“取消”按钮随后变为黑色,但背景图像仍然设置为旧值。
答案 0 :(得分:0)
尝试这样的事情:
MFMailComposeViewController *mail = [[MFMailComposeViewController alloc] init];
[mail.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
这应该重置此实例的背景图像。
答案 1 :(得分:0)
删除自定义背景图片
[[UINavigationBar appearance] setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
在致电之前,
MFMailComposeViewController *vc = [[MFMailComposeViewController alloc] init];
要点是在init
之前为导航栏外观设置任何自定义。