6

我的应用程序的导航控制器中有一个自定义导航栏图像,使用 UIAppearance 协议设置。但是,当通过应用程序(通过MFMailComposeViewController)发送邮件时,我想要默认导航栏而不是自定义导航栏。我尝试了这个问题中概述的方法: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有一些效果,因为“取消”按钮随后变黑,但背景图像仍设置为旧值。

4

2 回答 2

0

尝试这样的事情:

MFMailComposeViewController *mail = [[MFMailComposeViewController alloc] init];
[mail.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];

这应该只为这个实例重置背景图像。

于 2013-02-26T20:23:59.670 回答
0

移除自定义背景图片

[[UINavigationBar appearance] setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];

打电话之前,

MFMailComposeViewController *vc = [[MFMailComposeViewController alloc] init];

重点是之前为导航栏外观设置任何自定义init

于 2014-08-03T05:57:19.650 回答