MFMailComposeViewController外观设置TintColor在iOS 7上消失了。

4
这个问题与运行iOS 7的Xcode 5有关,并且非常奇怪。我试图将所有UInavigation和UIBarButtonItem的文本颜色设置为白色。
因此,在我的应用程序启动代理中,我设置了以下代码。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    UIImage *NavigationPortraitBackground = [UIImage imageNamed:@"button_header_blue"];

    // Set the background image all UINavigationBars
    [[UINavigationBar appearance] setBackgroundImage:NavigationPortraitBackground forBarMetrics:UIBarMetricsDefault];



    // Set the text appearance for navbar
    [[UINavigationBar appearance] setTitleTextAttributes:
     [NSDictionary dictionaryWithObjectsAndKeys:
      [UIColor whiteColor], UITextAttributeTextColor,
      [UIColor whiteColor], UITextAttributeTextShadowColor,
      [NSValue valueWithUIOffset:UIOffsetMake(0, 0)], UITextAttributeTextShadowOffset,
      [UIFont fontWithName:@"Helvetica Neue" size:21], UITextAttributeFont,
      nil]];


    [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];


    NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:
                                [UIColor whiteColor],
                                UITextAttributeTextColor,
                                [UIColor whiteColor],
                                UITextAttributeTextShadowColor,
                                nil];

    [[UIBarButtonItem appearance] setTitleTextAttributes:attributes forState: UIControlStateNormal];

    [[UIBarButtonItem appearance] setTintColor:[UIColor whiteColor]];

    // Override point for customization after application launch.
    return YES;
}

如果我两次启动“发送邮件”操作 - 第一次,我看到UIBarButton项是白色的。然后我看了一下并点击了取消按钮 - 第二次,我看到它们都变成灰色且仅有标题可见。 - 这在我的iPhone模拟器和运行iOS 7的iPhone中都会发生。
如何解决这个问题? enter image description here enter image description here

根据苹果开发者支持:这是iOS 7.0中已知的一个错误。 - jasonjwwilliams
1个回答

11

我必须这样做,才能使它在iOS 7上正常工作。

if ([MFMailComposeViewController canSendMail])
    {

        MFMailComposeViewController *mailViewController = [[MFMailComposeViewController alloc] init];
        mailViewController.mailComposeDelegate = self;

        [mailViewController.navigationBar setTintColor:[UIColor whiteColor]];
        [mailViewController.navigationBar setBarTintColor:[UIColor whiteColor]];

....

你把这个放在哪里了?我遇到了同样的问题,但是我正在使用UIActivityViewController。这仍然有效吗? - Nick
这段代码是用于导航栏和邮件控制器的。你可以看到我使用的所有代码。我认为它在UIActivityViewController中不起作用,除非你在其中使用了一个uinavigation bar。 - Sam B

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接