更改MFMailComposeViewController的工具栏颜色

我在我的iPhone应用程序中使用有色的导航栏和有色的全局UIToolbar。 在我的信息视图中,我有一个打开MFMailComposeViewController的button,该视图顶部的工具栏(“取消”和“发送”button)仍然是蓝色的。 我打电话给这样的MFMailComposeViewController:

-(void)displayMailSheet { MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init]; picker.mailComposeDelegate = self; [picker setSubject:@"..."]; NSArray *toRecipients = [NSArray arrayWithObject:@"..."]; [picker setToRecipients:toRecipients]; [self presentModalViewController:picker animated:YES]; [picker release]; } 

是否有可能改变该视图的工具栏的颜色? 如果可能的话,我该怎么做?

干得好:

 [[picker navigationBar] setTintColor:[UIColor blackColor]]; 

为iOS 8.0

  [[picker navigationBar] setBarTintColor:[UIColor blackColor]]; 

关于这个function在iOS7下的一个小点 – 色彩属性不再影响整个酒吧的颜色,而只是改变“发送”和“取消”button的颜色(在iOS7风格,只是简单的有色标签)。

这是值得注意的,如果你已经改变了标题栏颜色为白色或清晰的东西,在iOS7下,发送和取消button将不再可见。

你可以从appdelegate全局做到这一点

 [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigationbar-background.png"] forBarPosition:UIBarPositionTopAttached barMetrics:UIBarMetricsDefault]; // MFMailComposeViewController's navigationBar backgroundcolor NSDictionary *textTitleOptions = [NSDictionary dictionaryWithObjectsAndKeys:[UIColor darkGrayColor], UITextAttributeTextColor, [UIColor whiteColor], UITextAttributeTextShadowColor, nil]; [[UINavigationBar appearance] setTitleTextAttributes:textTitleOptions];//MFMailComposeViewController's navigationBar text color 

只是想强调一下,上面有关苹果拒绝你的申请的post是一个旧post。 这里是从当前的MFMailComposeViewController文档引用…

重要提示 :这个类的视图层次是私有的,你不能修改它。 但是,您可以使用UIAppearance协议自定义实例的外观。

尝试这个:

 MFMailComposeViewController *mailController = [MFMailComposeViewController new]; [mailController.navigationBar setTintColor:[UIColor colorWithHue:240.0f/359.0f saturation:85.0f/100.0f brightness:60.0f/100.0f alpha:0.0f]]; 

从官方的MFMailComposeViewController类参考:

重要说明:邮件编写界面本身不可定制,不能被应用程序修改。 […]

我认为这将是一个更好的select,呈现默认的邮件组成界面没有任何改变。 否则苹果可能会拒绝你的申请。

在这里问一下,如果有人有这样的经验。