英文:
How to change the appearance of MFMailComposeViewController
问题
以下是您要翻译的内容:
有没有办法影响MFMailComposeViewController的外观?
我有一个在按钮被点击时调用的函数。
@objc private func presentMailComposer() {
ActionHandler.shared.shareMail()
guard MFMailComposeViewController.canSendMail() else { /* TODO: error output to user */ return }
let mailComposer = MFMailComposeViewController()
mailComposer.mailComposeDelegate = self
if let attachmentData = try? Data(contentsOf: pdfURL) {
let fileName: String = self.pdfURL.lastPathComponent
mailComposer.addAttachmentData(attachmentData, mimeType: "application/pdf" /* TODO: type needs to be changed for different document types */, fileName: fileName)
}
let allScenes = UIApplication.shared.connectedScenes
let scene = allScenes.first { $0.activationState == .foregroundActive }
if let windowScene = scene as? UIWindowScene {
windowScene.keyWindow?.rootViewController?.present(mailComposer, animated: true, completion: nil)
}
}
问题是它不太可读...
我可以看到用户自己输入的文本,但我只能猜测取消/发送按钮的位置。
我在这里找到了很多关于这个主题的帖子:
大多数都太旧了,不再起作用,其他一些根本不起作用。
我理解VC的外观应该由系统管理。我尝试将背景更改为黑色或白色,但这并没有改变任何事情。
我还发现很多修饰符(如.fileImporter)也有同样的问题。
所有这些UINavigationBar.appearance方法似乎也没有改变任何东西。
[iOS 15,iPhone]
欢迎任何建议!
英文:
Is there any way to influence the appearance of the MFMailComposeViewController?
I have a function that is called when a button is tapped.
@objc private func presentMailComposer() {
ActionHandler.shared.shareMail()
guard MFMailComposeViewController.canSendMail() else { /* TODO: error output to user */ return }
let mailComposer = MFMailComposeViewController()
mailComposer.mailComposeDelegate = self
if let attachmentData = try? Data(contentsOf: pdfURL) {
let fileName: String = self.pdfURL.lastPathComponent
mailComposer.addAttachmentData(attachmentData, mimeType: "application/pdf" /* TODO: type needs to be changed for different document types */, fileName: fileName)
}
let allScenes = UIApplication.shared.connectedScenes
let scene = allScenes.first { $0.activationState == .foregroundActive }
if let windowScene = scene as? UIWindowScene {
windowScene.keyWindow?.rootViewController?.present(mailComposer, animated: true, completion: nil)
}
}
The problem is that it's not really readable...
I can see the text the user types in by themself, but the cancel/send buttons I can only tap by guessing where they are.
I found a lot of posts here about the topic:
Most of them are too old and don't work any longer and others don't work at all.
I understand that the VC appearance should be managed by the system. I tried to change the background to black or white, but that didn't change anything.
I also found that a lot of modifiers (like .fileImporter) have the same problem.
All these UINavigationBar.appearance approaches don't seem to change anything either.
[iOS 15, iPhone]
Every tip is welcome!
答案1
得分: 0
我发现在你的Assets.xcassets文件中更改AccentColor确实会影响这些叠加层的外观。
我将其改回为无,现在一切都看起来完美。
英文:
I found out that changing the AccentColor in your Assets.xcassets file does have an effect on the appearance of these overlays.
I changed it back to none and everything looks perfect.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论