我想在我的应用程序中自定义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,如下所示:
我的结果:
发布于 2021-02-25 15:47:12
来自苹果:
重要您不能修改此视图控制器显示的视图层次结构。但是,您可以使用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)
https://stackoverflow.com/questions/66363945
复制相似问题