let alert = UIAlertController(title: "", message: "", preferredStyle: UIAlertController.Style.alert) ///标题颜色/字体 let titleAtt = NSMutableAttributedString(string: "删除会员卡", attributes: [NSAttributedString.Key.font : UIFont.systemFont(ofSize: 16, weight: UIFont.Weight.regular), NSAttributedString.Key.foregroundColor:UIColor.init(hexString: "#000000")]) alert.setValue(titleAtt, forKey: "attributedTitle")
///设置字体alignment 方法1 有问题, 汉字和字母混合系统自动换行
let paragraph = NSMutableParagraphStyle()
paragraph.alignment = .left
alertControllerMessageStr.setAttributes([
NSAttributedString.Key.paragraphStyle: paragraph
], range: NSRange(location: 0, length: alertControllerMessageStr.length))
alert.setValue(alertControllerMessageStr, forKey: "attributedMessage")
//设置字体2
let subView1 = alert.view.subviews[0]
let subView2 = subView1?.subviews[0]
let subView3 = subView2?.subviews[0]
let subView4 = subView3?.subviews[0]
let subView5 = subView4?.subviews[0]
var title_lb: UILabel?
var message_lb: UILabel?
///subView5.subviews[2] 是label ,就是真机的
if subView5?.subviews[2].classForCoder == UILabel.classForCoder {
///真机subView5.subviews.count 是5
title_lb = subView5?.subviews[1] as? UILabel ///title
message_lb = subView5?.subviews[2] as? UILabel ///message
} else {
//模拟器 subView5.subviews.count 是4
title_lb = subView5?.subviews[0] as? UILabel ///title
message_lb = subView5?.subviews[1] as? UILabel ///message
}
title_lb?.textAlignment = .right
message_lb?.textAlignment = textAlignment
//message 字体/颜色 let messageStr = "\n" + tipTuple.tipStr let messageAtt = NSMutableAttributedString(string: messageStr, attributes: [NSAttributedString.Key.font : UIFont.systemFont(ofSize: 14, weight: UIFont.Weight.regular), NSAttributedString.Key.foregroundColor:UIColor.init(hexString: "#9B9B9B")]) alert.setValue(messageAtt, forKey: "attributedMessage") ///action 颜色 let leftAction = UIAlertAction(title: "我知道了", style: UIAlertAction.Style.default, handler: nil) leftAction.setValue(main_tinColor, forKey: "titleTextColor") alert.addAction(leftAction) self.present(alert, animated: true, completion: nil)
参考链接
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现