我在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];
}
是否可以更改该视图工具栏的颜色?如果有可能,我该怎么做?
答案 0 :(得分:40)
你走了:
[[picker navigationBar] setTintColor:[UIColor blackColor]];
for iOS 8.0
[[picker navigationBar] setBarTintColor:[UIColor blackColor]];
答案 1 :(得分:12)
关于iOS7下此功能的一个小问题 - 色调颜色属性不再影响整个条形图的颜色,而只是改变了“发送”和“取消”按钮的颜色(在iOS7样式中) ,只是有色标签)。
如果您将标题栏颜色更改为白色或透明,这是值得注意的,因为在iOS7下,发送和取消按钮将不再可见。
答案 2 :(得分: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
答案 3 :(得分:3)
只是想强调一下,关于苹果拒绝你的申请的上述帖子是一个老帖子。以下是当前MFMailComposeViewController文档的引用...
重要:此类的视图层次结构是私有的,您不能修改它。但是,您可以自定义外观 例如,使用UIAppearance协议。
答案 4 :(得分:1)
试试这个:
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]];
答案 5 :(得分:-3)
从官方的MFMailComposeViewController类引用:
重要提示:邮件撰写界面本身不可自定义,您的应用程序不得修改。 [...] 强>
我认为在没有任何更改的情况下呈现默认邮件撰写界面是更好的选择。否则Apple可能会拒绝您的申请。
让我们在这里询问是否有人以这种方式获得了经验。