我试图使用UIlabel扩展+字符串扩展来获得摘要结果,但失去了一些设置。
这里是UILabel扩展
extension UILabel {
static func insultString() -> UILabel {
let label = UILabel()
label.lineBreakMode = .byWordWrapping
label.numberOfLines = 0
label.textAlignment = .center
label.font = AppFonts.regular17.font
label.adjustsFontSizeToFitWidth = true
label.minimumScaleFactor = 0.7
label.lineBreakMode = .byClipping
label.sizeToFit()
return label
}
}下面是我在代码中使用它的方式
private var insultLabel = UILabel.insultString()下面是字符串扩展
extension String {
static func stringConfig(_ label: String) -> NSAttributedString {
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.lineHeightMultiple = 1.35
let string = NSMutableAttributedString(string: label, attributes: [NSAttributedString.Key.paragraphStyle: paragraphStyle])
return string
}
}下面是我如何在代码中使用它
self.insultLabel.attributedText = String.stringConfig(self.presenter?.insults.savedInsults.last ?? "No insults")问题是我正确地获得了字符串的字体和大小,但是我丢失了label.textAlignment = .center,label.adjustsFontSizeToFitWidth = true,等等。为什么会这样?
发布于 2022-05-17 17:36:22
在NSAttributedString中,每个段落都可以有自己的文本对齐,因此需要在paragraphStyle中设置它:
paragraphStyle.alignment = .center谈到adjustsFontSizeToFitWidth,我不认为它适用于属性化文本,因为在这种情况下,UILabel不再拥有字体大小。它没有明确的记录,但对我来说是有意义的。
类似地,在构造标签时设置为标签的其他一些属性将被忽略,因为它们是由属性化字符串管理的。
https://stackoverflow.com/questions/72278295
复制相似问题