微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 iOS 14 中自定义 MFMailComposeViewController

如何解决如何在 iOS 14 中自定义 MFMailComposeViewController

我想在我的应用程序中自定义 MFMailComposeViewController 样式及其行为,但我所有的尝试都失败了。我尝试了几种方法: 第一种方式:

let mailComposeViewController = MFMailComposeViewController()
...
UINavigationBar.appearance().tintColor = UIColor.red //don't see changes
UINavigationBar.appearance().barTintColor = UIColor.green //don't see changes
UINavigationBar.appearance().backgroundColor = UIColor.yellow //don't see changes
UINavigationBar.appearance().isTranslucent = false //don't see changes
UINavigationBar.appearance().clipsToBounds = false //don't see changes
UINavigationBar.appearance().prefersLargeTitles = false //don't see changes

present(mailComposeViewController,animated: true,completion: nil)

第二种方式:

extension MFMailComposeViewController {
    open override func viewDidLoad() {
        super.viewDidLoad()
        self.navigationBar.clipsToBounds = true //don't see changes
        self.navigationBar.prefersLargeTitles = false //don't see changes
        self.navigationBar.isTranslucent = false //don't see changes
        self.navigationBar.barTintColor = UIColor.green //don't see changes
        self.navigationBar.tintColor = UIColor.red //only this works!
    }
}

PS 我最感兴趣的是将 prefersLargeTitles 更改为 false 或更改 navigationBarStyle 如下:

exemple

我的结果:

exemple2

解决方法

来自苹果:

重要 您不得修改此视图控制器呈现的视图层次结构。但是,您可以使用 UIAppearance 协议自定义界面的外观。

我认为 Apple 在第二种方式上不批准您的代码,您不应该修改此视图。但是,请尝试:

UINavigationBar.appearance().tintColor = UIColor.red 
UINavigationBar.appearance().barTintColor = UIColor.green 
UINavigationBar.appearance().backgroundColor = UIColor.yellow 
UINavigationBar.appearance().isTranslucent = false 
UINavigationBar.appearance().clipsToBounds = false 
UINavigationBar.appearance().prefersLargeTitles = false 

let mailComposeViewController = MFMailComposeViewController()
present(mailComposeViewController,animated: true,completion: nil)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。