如何在MDCAlertController的消息内容中设置粗体属性?
问题原因
iOS平台的Material Components库中,MDCAlertController默认会对消息文本应用组件内置的统一字体样式,会覆盖通过attributedMessage构造参数传入的富文本中的字体属性,是该组件的默认设计特性。
解决方案
初始化弹窗时不要直接通过构造方法传入属性化文本,改为手动给内部消息标签赋值,即可绕过默认样式覆盖逻辑,修改后代码如下:
let message = "This should be bold" let attributedString = NSMutableAttributedString(string: message, attributes: [ .font: UIFont.systemFont(ofSize: 14) ]) attributedString.addAttribute( .font, value: UIFont.boldSystemFont(ofSize: 14), range: (message as NSString).range(of: "bold") ) // 初始化时先不传属性化消息 let alert = MDCAlertController( title: "Example alert", message: nil ) // 直接给内部消息标签赋值属性化文本 alert.messageLabel.attributedText = attributedString // 可选:不需要适配动态字体大小时可关闭该属性,避免样式被二次修改 alert.messageLabel.adjustsFontForContentSizeCategory = false alert.addAction(MDCAlertAction(title: "OK")) present(alert, animated: true)
运行效果

内容的提问来源于stack exchange,提问作者user13567120
相关产品推荐
相关产品推荐

