如何从默认的蓝色为MFMailComposeViewController生成UIBarButtonItems的颜色?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从默认的蓝色为MFMailComposeViewController生成UIBarButtonItems的颜色?相关的知识,希望对你有一定的参考价值。
无论我似乎尝试什么,在用户选择通过电子邮件发送链接时出现的电子邮件屏幕(它是MFMailComposeViewController
),按钮始终是默认的蓝色。
我在我的AppDelegate中有这个:
[[UINavigationBar appearance] setBarTintColor:[UIColor colorWithRed:0.000 green:156/255.0 blue:51/255.0 alpha:1]];
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
[[UINavigationBar appearance] setTitleTextAttributes:@{ NSForegroundColorAttributeName: [UIColor whiteColor] }];
它确实为MFMailComposeViewController
的标题着色,但没有按钮。我该如何做到这一点?
当我在其他地方把它变成白色时,它也会使我的状态栏保持黑色。
答案
MFMailComposeViewController *mailController = [[MFMailComposeViewController alloc] init];
mailController.mailComposeDelegate = self;
[mailController setToRecipients: [NSArray arrayWithObjects:@"recipients", nil]];
[mailController setSubject: @"Contact Us"];
[mailController setMessageBody: @"Mail Body" ishtml:NO];
[[mailController navigationBar] setTintColor: [UIColor blackColor]]; //color
[self presentViewController: mailController animated:YES completion:^{
[[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleBlackTranslucent];
}];
从ios 6开始,MFMailComposeViewController(以及其他一些视图控制器)在一个单独的进程上运行,因此它们不会继承应用程序中使用的样式。假设您正在使用最新的SDK,使用上述方法可能会有所帮助,至少可以在iOS 7上运行。 You can read more about remote view controllers here.
另一答案
您可以在AppDelegate中为UIBarButtonItem设置全局色调颜色,以便MFMailComposeViewController将其用作其自己按钮的颜色。
let barButtonItemAppearance = UIBarButtonItem.appearance()
barButtonItemAppearance.tintColor = KK.GRAPHICS.COLOR_WHITE
以上是关于如何从默认的蓝色为MFMailComposeViewController生成UIBarButtonItems的颜色?的主要内容,如果未能解决你的问题,请参考以下文章