首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UILabel,NSMutableParagraphStyle(),NSAttributedString

UILabel,NSMutableParagraphStyle(),NSAttributedString
EN

Stack Overflow用户
提问于 2022-05-17 17:23:50
回答 1查看 150关注 0票数 0

我试图使用UIlabel扩展+字符串扩展来获得摘要结果,但失去了一些设置。

这里是UILabel扩展

代码语言:javascript
复制
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

    }
}

下面是我在代码中使用它的方式

代码语言:javascript
复制
private var insultLabel = UILabel.insultString()

下面是字符串扩展

代码语言:javascript
复制
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
    }
}

下面是我如何在代码中使用它

代码语言:javascript
复制
self.insultLabel.attributedText = String.stringConfig(self.presenter?.insults.savedInsults.last ?? "No insults")

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

EN

回答 1

Stack Overflow用户

发布于 2022-05-17 17:36:22

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

代码语言:javascript
复制
paragraphStyle.alignment = .center

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

类似地,在构造标签时设置为标签的其他一些属性将被忽略,因为它们是由属性化字符串管理的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72278295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档