swift中的多行多色属性文本

Posted

技术标签:

【中文标题】swift中的多行多色属性文本【英文标题】:Multiline multicolor attributed text in swift 【发布时间】:2018-09-15 15:49:34 【问题描述】:

如何使用属性文本构建这样的内容?我尝试添加换行符(\n),它不起作用,只显示第一行并裁剪下两个,删除 \n 将在单行中显示两个部分:

let mutableAttributedString = NSMutableAttributedString()

let regularAttribute = [NSAttributedStringKey.font: UIFont(name: "Avenir-Light", size: 45.0), NSAttributedStringKey.foregroundColor: UIColor.yellow]
let boldAttribute = [NSAttributedStringKey.font: UIFont(name: "Avenir-Light", size: 25.0), NSAttributedStringKey.foregroundColor: UIColor.white]     

let mutableAttributedString2 = NSMutableAttributedString()
let boldAttributedString = NSAttributedString(string: "person", attributes: boldAttribute)
let regularAttributedString = NSAttributedString(string: "\(self.requestCount)", attributes: regularAttribute)
mutableAttributedString2.append(boldAttributedString)
mutableAttributedString2.append(NSAttributedString(string: "\n"))
mutableAttributedString2.append(regularAttributedString)

self.btnStatsPeople.setAttributedTitle(mutableAttributedString2, for: .normal)

【问题讨论】:

您的问题与UIButton: ***.com/questions/604632/… 有关吗? ***.com/questions/23845982/…? 【参考方案1】:

UILabel 默认有一个line。

此属性控制要使用的最大行数,以便 使标签的文本适合其边界矩形。默认值 对于这个属性是 1. 删除任何最大限​​制,并使用尽可能多的 行,根据需要将此属性的值设置为 0。

UIButton 创建默认的 UILabel。因此,使用 0 行可以解决您的问题:

self.btnStatsPeople.titleLabel?.numberOfLines = 0

【讨论】:

以上是关于swift中的多行多色属性文本的主要内容,如果未能解决你的问题,请参考以下文章

swift UILabel中的多行文本(来自http://stackoverflow.com/a/990244/1135737)

如何使用 Swift 在 iOS 中检测多行键盘粘贴事件?

swift 2 sprite-kit 中的多行标签?

Swift - 多行文本输入框(UITextView)

赵雅智_Swift_swift凝视

具有大小类的自调整 UITableViewCells 中的多行 UILabel - iOS 8 和 Swift