更改iOS 12中MFMailComposeViewController中导航栏的标题颜色不工作

更改iOS 12中MFMailComposeViewController中导航栏的标题颜色不工作,ios,iphone,swift,uinavigationbar,mfmailcomposeviewcontroller,Ios,Iphone,Swift,Uinavigationbar,Mfmailcomposeviewcontroller,如何更改iOS 12中的MFMailComposeViewController中的UINavigationBar的标题颜色 这就是我正在做的: import MessageUI extension MFMailComposeViewController { open override func viewDidLoad() { super.viewDidLoad() navigationBar.isTranslucent = false n

如何更改iOS 12中的
MFMailComposeViewController
中的
UINavigationBar
的标题颜色

这就是我正在做的:

import MessageUI

extension MFMailComposeViewController {
    open override func viewDidLoad() {
        super.viewDidLoad()
        navigationBar.isTranslucent = false
        navigationBar.isOpaque = false
        navigationBar.barTintColor = .white
        navigationBar.tintColor = .white
        navigationBar.titleTextAttributes = [.foregroundColor: UIColor.white]
    }
}
在iOS 10作品中:

在iOS 11工程中:

在iOS 12中,以下各项不起作用:


在didFinishLaunchingWithOptions启动选项块的AppDelegate.swift文件中

试试这个:

    let navigationBarAppearace = UINavigationBar.appearance()
    navigationBarAppearace.barTintColor = .blue //your desired color
    navigationBarAppearace.tintColor = .white //your button etc color 
    navigationBarAppearace.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white] //your Title Text color

我尝试了所有的方式来改变标题的颜色,但它不工作

在展示mailcomopser控制器之前

我把背景颜色改成了白色

和按钮颜色为黑色

代码如下:

UINavigationBar.appearance().setBackgroundImage(UIImage(), for: UIBarPosition.any, barMetrics: UIBarMetrics.default)
UINavigationBar.appearance().shadowImage = UIImage()
UINavigationBar.appearance().tintColor = UIColor.white
UINavigationBar.appearance().barTintColor = UIColor.white
UINavigationBar.appearance().isTranslucent = false
UINavigationBar.appearance().clipsToBounds = false
UINavigationBar.appearance().backgroundColor = UIColor.white
UIBarButtonItem.appearance().setTitleTextAttributes([.foregroundColor: UIColor.black], for: .normal)
UIBarButtonItem.appearance().setTitleTextAttributes([.foregroundColor: UIColor.black], for: .highlighted)
UIBarButtonItem.appearance().setTitleTextAttributes([.foregroundColor: UIColor.clear], for: .disabled)
UIBarButtonItem.appearance().setTitleTextAttributes([.foregroundColor: UIColor.black], for: .selected)

标题视图仍然可以正常工作。只需在故事板中创建带有标签的视图,使用您需要的字体,并将其设置为标题视图

if let view = Bundle.main.loadNibNamed("WTitleView", owner: self, options: nil)?.first as? UIView {
            navigationItem.titleView = view
} 

您并不孤单:仅供参考-不支持在扩展中重写方法,这是未定义的行为。请参阅Swift手册中的扩展章节,以获得一个大的警告,告诉您这一点。我也有同样的问题(但在Objective-C中)。我已尝试在
init
viewDidLoad
viewwillbeen
viewdidbeen
中更新导航栏。我已经设置了窗口的
tintColor
,并尝试在导航栏和
UINavigationBar外观上设置
titleTextAttributes
。iOS 12中的标题没有任何更改。我甚至已经放弃了视图层次结构,没有导航条的迹象。但在iOS 10和iOS 12下都是如此。是时候向苹果公司报告错误了。@ssrobbi是的,我已经尝试过设置
largeTitleTextAttributes
的颜色,但没有任何改变。我不认为大标题被使用了。我确实提交了一份bug报告。其他人也需要这样做,让苹果知道这影响到了很多人。我也向苹果提交了一个bug。我一直找不到一个好的解决方案,也找不到任何原因来解释为什么它在我这方面不起作用。但问题是如何在iOS 12中更改MFMailComposeViewController的标题颜色不幸的是,它在任何情况下都不起作用,所以我们需要修改背景颜色和按钮颜色,为什么它在iOS 14中不起作用?