NSForegroundColorAttributeName不会更改MFMailComposeViewController中的导航栏按钮颜色。

时间:2015-06-12 16:09:51

标签: ios cocoa-touch uinavigationbar uicolor

[[UINavigationBar appearance] setTitleTextAttributes: @{ NSForegroundColorAttributeName: navigationBarFontColor, NSFontAttributeName: navigationBarFont }];

我通过上面的外观代理在我的应用中设置了所有按钮颜色。它会改变文本的颜色,如“+”和后退按钮,如“< Home”。

然而,当我弹出一个MFMailComposeViewController时,取消和发送按钮是默认的iOS蓝色,而不是我选择的颜色,就像我的应用程序的其余部分一样。这是为什么?

        if ([MFMailComposeViewController canSendMail])
        {
            MFMailComposeViewController *mailController = [[MFMailComposeViewController alloc] init];
            mailController.mailComposeDelegate = self;

            [mailController setSubject:REPORTMISSING_SUBJECT];
            [mailController setToRecipients:[NSArray arrayWithObject:REPORTMISSING_RECEIPIENT]];

            [self presentViewController:mailController animated:YES completion:nil];
        }

1 个答案:

答案 0 :(得分:0)

据我所知,setTitleTextAttributes方法只能更改导航栏的标题属性,不会影响按钮。 也就是说,如果您仍想使用此方法来自定义标题,请在创建MFMailComposeViewController实例之前尝试调用它,它应该可以正常工作。

要更改取消/发送按钮颜色,您可以使用tintColor属性:

mailController.view.tintColor = navigationBarFontColor;

或者,您可以使用UIBarButtonItem的外观代理。这也应该工作,也可以让你改变字体(再次,你需要在创建和呈现邮件编辑器之前调用它):

[[UIBarButtonItem appearance] setTitleTextAttributes:@{ NSForegroundColorAttributeName: navigationBarFontColor, NSFontAttributeName: navigationBarFont } forState:UIControlStateNormal];