如何在 ios7 上将导航栏背景图像添加到 MFMailComposeViewController
Posted
技术标签:
【中文标题】如何在 ios7 上将导航栏背景图像添加到 MFMailComposeViewController【英文标题】:How can I add navigationbar background image to MFMailComposeViewController on ios7 【发布时间】:2013-11-11 22:59:09 【问题描述】:我正在使用 MFMailComposeViewController。我无法将导航栏背景图像添加到 ios7 上的 MFMailComposeViewController。我的代码在 ios7 之前工作。但在 ios7 上不起作用。如何将导航栏背景图像添加到 ios7 上的 MFMailComposeViewController?
MFMailComposeViewController *mailCompose = [[MFMailComposeViewController alloc] init];
mailCompose.mailComposeDelegate = self;
[mailCompose setSubject:@"SubjectName"];
[mailCompose setMessageBody:shareBodyString ishtml:NO];
if ([self respondsToSelector:@selector(presentViewController:animated:completion:)])
[self presentViewController:mailCompose animated:YES completion:nil];
else
[self presentModalViewController:mailCompose animated:YES];
[mailCompose.topViewController.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigationbar-background.png"] forBarMetrics:UIBarMetricsDefault]; // working before ios7
【问题讨论】:
【参考方案1】:使用外观代理。以下代码将针对整个应用程序:
UINavigationBar *navBar = [UINavigationBar appearance];
[navBar setBackgroundImage:[UIImage imageNamed:@"navigationbar-background.png"] forBarMetrics:UIBarMetricsDefault];
如果您更喜欢仅在 MFMailComposeViewController 中定位,请使用以下内容更改第一行:
navBar = [UINavigationBar appearanceWhenContainedIn:[MFMailComposeViewController class], nil];
【讨论】:
感谢@vinceBurn 的回答。今天我有会议。我会在空闲时间看看 这行不通。但它帮助我进行研究和发现。我写了这段代码,它的工作: [[UINavigationBar 外观] setBackgroundImage:[UIImage imageNamed:@"navigationbar-background.png"] forBarPosition:UIBarPositionTopAttached barMetrics:UIBarMetricsDefault]; .但我不明白为什么你的代码不起作用。你的代码和我有什么区别?谢谢 @ErhanDemirci 除非针对您的情况进行修改,否则我发布的代码将无法编译,我会将代码更新为更“通用”【参考方案2】:如果您已经自定义了导航栏并且还希望它应用 MFMailComposeViewController,它只允许使用 UIAppearance 代理来实现。对于 iOS 7.1.1,我替换了导航栏背景,但无法更改状态栏背景。此外,它在后续调用中将条形按钮项显示为灰色。因此我停止自定义并尝试在创建 MFMailComposeViewController 之前返回默认导航栏样式
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
[[UINavigationBar appearance] setBarStyle:UIBarStyleDefault];
[[UINavigationBar appearance] setTintColor:nil];
[[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor blackColor],NSForegroundColorAttributeName,[UIFont fontWithName:@"Helvetica-Bold" size:18.0], NSFontAttributeName, nil]];
MFMailComposeViewController *mailComposer =[[MFMailComposeViewController alloc] init];
【讨论】:
以上是关于如何在 ios7 上将导航栏背景图像添加到 MFMailComposeViewController的主要内容,如果未能解决你的问题,请参考以下文章