在MFMailComposeViewController的导航栏中出现ios 11问题

时间:2017-11-25 07:40:27

标签: ios swift xcode ios11

我使用下面的代码来展示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.我已将整体应用导航栏色调颜色设置为白色。因此在控制器中我得到白色调而不是绿色。

2 个答案:

答案 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
}