MFMailComposeViewController导航栏中的ios 11问题

MFMailComposeViewController导航栏中的ios 11问题,ios,swift,xcode,ios11,Ios,Swift,Xcode,Ios11,我使用下面的代码来演示MFMailViewController。在ios 11发布之前,一切都很完美 let mailViewController = MFMailComposeViewController() mailViewController.mailComposeDelegate = self mailViewController.setToRecipients(

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

我正在演示这个函数,在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
}

我正在演示这个函数,在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
}

我终于发现了问题所在。我在其中一个文件中全局修改了UIBarButton

UIBarButtonItem.appearance.setTitleTextAttributes[NSForegroundColorAttributeName:UIColor.theme,NSFontAttributeName:UIFont.regularAppFontOfSize0.0],用于:UIControlState.normal

尽管我使用了mailViewController.navigationBar.tintColor=UIColor.green,但由于全局修改,它没有任何效果

但令人惊讶的是,ios 10及以下版本没有问题,ios 11却没有问题


如果有人知道原因,我们将不胜感激

我终于找到了问题所在。我在其中一个文件中全局修改了UIBarButton

UIBarButtonItem.appearance.setTitleTextAttributes[NSForegroundColorAttributeName:UIColor.theme,NSFontAttributeName:UIFont.regularAppFontOfSize0.0],用于:UIControlState.normal

尽管我使用了mailViewController.navigationBar.tintColor=UIColor.green,但由于全局修改,它没有任何效果

但令人惊讶的是,ios 10及以下版本没有问题,ios 11却没有问题


如果有人知道原因,我们将不胜感激

您是否尝试过self.navigationController?.navigationBar.tintColor=UIColor.green MFMailComposeViewController类viewodLoad方法?是。但是没有用。您是否尝试过self.navigationController?.navigationBar.tintColor=UIColor.green n MFMailComposeViewController类viewodLoad方法?是。但没用,我有答案。我已经贴了。谢谢Nav?.barStyle=.black救了我的命!非常感谢。我得到了一个答案。我已经贴了。谢谢Nav?.barStyle=.black救了我的命!非常感谢。