如何在MFMailComposer中将插入的自定义字符串值字体设置为红色
实现方案
要给邮件正文中的指定字符串设置红色,你可以通过HTML格式的邮件正文实现,MFMailComposeViewController原生支持HTML渲染,修改步骤如下:
- 将
setMessageBody方法的isHTML参数改为true - 把原纯文本正文改写为带CSS样式的HTML内容,需要标红的字段用
<span style="color: red;">标签包裹 - 建议提前对
UITextField的text可选值做安全解包,避免正文出现Optional(xxx)的冗余内容
修改后的完整代码如下:
func showMailComposer() { guard MFMailComposeViewController.canSendMail() else { return } // 提前安全解包输入内容,避免显示Optional标识 let teamName = teamname.text ?? "" let rundeStr = runde.text ?? "" let zeitStr = zeit.text ?? "" let totalPoints = punkteGesamt.text ?? "" // 构造HTML格式正文,需要标红的内容包裹红色样式标签 let htmlBody = """ <html> <body style="font-family: -apple-system; font-size: 16px;"> <p>Teamname: <span style="color: red;">\(teamName)</span></p> <p>Runde: <span style="color: red;">\(rundeStr)</span></p> <p>Zeit: <span style="color: red;">\(zeitStr)</span></p> <p>Gesamtpunktzahl: <span style="color: red;">\(totalPoints)</span></p> </body> </html> """ let composer = MFMailComposeViewController() composer.mailComposeDelegate = self composer.setToRecipients(["E-Mail@gmail.com"]) composer.setSubject("Bewertung Tisch 1") // 开启HTML解析 composer.setMessageBody(htmlBody, isHTML: true) present(composer, animated: true) }
注意事项
- 如果用户输入的内容可能包含
<、>、&等HTML特殊字符,需要提前做转义处理,避免HTML渲染异常 - 可以调整
<body>标签里的font-size、font-family属性匹配你需要的默认字体效果
内容的提问来源于stack exchange,提问作者Gongkikong
相关产品推荐
相关产品推荐

