如何从默认的蓝色为MFMailComposeViewController生成UIBarButtonItems的颜色?

问题描述 投票:4回答:2

无论我似乎尝试什么,在用户选择通过电子邮件发送链接时出现的电子邮件屏幕(它是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的标题着色,但没有按钮。我该如何做到这一点?

当我在其他地方把它变成白色时,它也会使我的状态栏保持黑色。

ios objective-c ios7 mfmailcomposeviewcontroller uiappearance
2个回答
16
投票
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.


0
投票

您可以在AppDelegate中为UIBarButtonItem设置全局色调颜色,以便MFMailComposeViewController将其用作其自己按钮的颜色。

    let barButtonItemAppearance = UIBarButtonItem.appearance()
    barButtonItemAppearance.tintColor = KK.GRAPHICS.COLOR_WHITE
© www.soinside.com 2019 - 2024. All rights reserved.