我使用下面的代码来展示MFMailViewController。一切顺利,直到ios 11发布。
let mailViewController = MFMailComposeViewController()
mailViewController.mailComposeDelegate = self
mailViewController.setToRecipients(nil)
mailViewController.setSubject("Subject")
mailViewController.navigationBar.tintColor = UIColor.green
UINavigationBar.appearance().isTranslucent = false
self.present(mailViewController, animated: true, completion: nil)
无论我使用什么代码,都没有任何效果。我能够呈现一个控制器,但导航栏色调颜色没有变化。此问题仅适用于ios 11.我已将整体应用导航栏色调颜色设置为白色。因此在控制器中我得到白色调而不是绿色。
答案 0 :(得分:2)
我终于发现了什么问题。我在其中一个文件中全局修改了UIBarButton。
UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.theme, NSFontAttributeName : UIFont.regularAppFontOfSize(0.0)], for: UIControlState.normal)
即使我使用mailViewController.navigationBar.tintColor = UIColor.green
,由于全局修改,它也没有任何效果。
但令人惊讶的是,ios 10及以下版本没有任何问题,但是在ios 11中。
如果有人知道原因,那就赞赏了。
答案 1 :(得分:1)
我提供此功能,它在iOS 11上看起来很好。
override func viewDidLoad() {
super.viewDidLoad()
self.present(self.configuredMailComposeViewController(), animated: true, completion: nil)
}
func configuredMailComposeViewController() -> MFMailComposeViewController {
let mailComposeViewController = MFMailComposeViewController()
mailComposeViewController.mailComposeDelegate = self
mailComposeViewController.setSubject("Your subject and stuff like that")
let nav = self.navigationController?.navigationBar
nav?.barStyle = UIBarStyle.default
nav?.tintColor = UIColor.green
nav?.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.green]
return mailComposeViewController
}