【问题标题】:Changing MFMailComposeViewController's toolbar color更改 MFMailComposeViewController 工具栏颜色
【发布时间】:2010-12-10 16:52:15
【问题描述】:

我在我的 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];

}

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

【问题讨论】:

  • 你试过设置picker.navigationBar.tintColor吗?
  • 这很好用!谢谢! :-)

标签: ios objective-c colors toolbar mfmailcomposeviewcontroller


【解决方案1】:

给你:

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

适用于 iOS 8.0

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

【讨论】:

  • 感谢您的提示。它已经作为评论发布在上面,但现在我可以将问题标记为已解决;-)
  • 对于 iOS 7.0 应用程序,这不起作用。看看eggboxderek的笔记。
  • setTintColor 现在会更改条形按钮,因此您通常会在视图控制器上使用 setBarTintColor,但这不适用于 MFMailComposeViewController。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    您可以从 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 
    

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

        试试这个:

        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]];
        

        【讨论】:

          【解决方案6】:

          来自官方的 MFMailComposeViewController 类参考:

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

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

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

          【讨论】:

          • 您可以从 appdelegate 全局使用。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-21
          • 1970-01-01
          • 1970-01-01
          • 2016-07-26
          • 2015-11-04
          相关资源
          最近更新 更多