19

我在我的 iPhone 应用程序中使用有色导航栏和有色全局 UIToolbar。在我的信息视图中,我有一个打开 MFMailComposeViewController 的按钮,并且该视图顶部的工具栏(带有“取消”和“发送”按钮)仍然是蓝色的。我这样调用 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];

}

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

4

6 回答 6

39

干得好:

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

适用于 iOS 8.0

 [[picker navigationBar] setBarTintColor:[UIColor blackColor]];
于 2009-11-15T15:38:06.373 回答
12

关于 iOS7 下此功能的一个小问题 - tint color 属性不再影响整个栏的颜色,而是简单地更改“发送”和“取消”按钮的颜色(在 iOS7 样式中,它们只是有色标签)。

如果您将标题栏颜色更改为白色或透明色,这一点值得注意,因为在 iOS7 下,发送和取消按钮将不再可见。

于 2013-10-01T09:41:14.920 回答
5

您可以从 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 
于 2013-11-19T15:37:15.310 回答
3

只是想强调一下,上面关于苹果拒绝你的应用程序的帖子是一个旧帖子。这是当前 MFMailComposeViewController 文档的引用...

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

于 2013-11-07T07:29:26.170 回答
2

试试这个:

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]];
于 2012-06-26T07:29:33.180 回答
-3

来自官方的 MFMailComposeViewController 类参考:

重要提示:邮件撰写界面本身不可自定义,并且不得由您的应用程序修改。[...]

我认为在没有任何更改的情况下呈现默认邮件撰写界面会是一个更好的选择。否则 Apple 可能会拒绝您的申请。

在这里问问有没有人有过这样的经历。

于 2009-12-20T18:07:44.147 回答