【问题标题】:How to customize MFMailComposeViewController in iOS 14如何在 iOS 14 中自定义 MFMailComposeViewController
【发布时间】:2021-02-25 07:16:43
【问题描述】:

我想在我的应用程序中自定义 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 如下所示:

我的结果:

【问题讨论】:

    标签: ios swift mfmailcomposeviewcontroller


    【解决方案1】:

    来自苹果:

    重要 您不得修改此视图控制器呈现的视图层次结构。但是,您可以使用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)
    

    【讨论】:

    • 嗯。这和我的第一种方式没有什么不同。只有您在创建 MFMailComposeViewController 实例之前执行此操作。有那么重要吗?我看到了一些变化,但 .prefersLargeTitles 仍然不起作用
    • @VyacheslavBakinkskiy,我在设置更改后初始化窗口,而不是之前:) 这就是我所能提供的,祝你好运
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 2021-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多