swift - UILabel、NSMutableParagraphStyle()、NSAttributedString

我正在尝试使用 UIlabel 扩展 + String 扩展来获得摘要结果,但丢失了它的一些设置

这是 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()

这是 String 扩展名

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")

问题是我正确地获得了 string 的字体和大小,但是我丢失了 label.textAlignment = .center、label.adjustsFontSizeToFitWidth = true 等等……为什么会这样?

回答1

NSAttributedString中,每个段落都可以有自己的文本对齐方式,所以需要在paragraphStyle中设置:

paragraphStyle.alignment = .center

对于 adjustsFontSizeToFitWidth,我认为它不适用于属性文本,因为在这种情况下 UILabel 不再拥有字体大小。它没有明确记录,但对我来说很有意义。

同样,您在构建标签时设置的其他一些属性将被忽略,因为它们由属性 string 管理。

相似文章

最新文章