[[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];
}
答案 0 :(得分:0)
据我所知,setTitleTextAttributes
方法只能更改导航栏的标题属性,不会影响按钮。
也就是说,如果您仍想使用此方法来自定义标题,请在创建MFMailComposeViewController
实例之前尝试调用它,它应该可以正常工作。
要更改取消/发送按钮颜色,您可以使用tintColor属性:
mailController.view.tintColor = navigationBarFontColor;
或者,您可以使用UIBarButtonItem
的外观代理。这也应该工作,也可以让你改变字体(再次,你需要在创建和呈现邮件编辑器之前调用它):
[[UIBarButtonItem appearance] setTitleTextAttributes:@{ NSForegroundColorAttributeName: navigationBarFontColor, NSFontAttributeName: navigationBarFont } forState:UIControlStateNormal];