attributedString的Fontsize不变

时间:2019-06-24 13:02:00

标签: swift font-size nsattributedstring

我有一个attributedString,只想更改它的字体大小。为此,我使用在StackOverflow上找到的另一种方法。在大多数情况下,这是可行的,但是在某种情况下,它并不能改变整个attributedString

更改大小的方法:

/**
*A struct with static methods that can be useful for your GUI
*/
struct GuiUtils {

static func setAttributedStringToSize(attributedString: NSAttributedString, size: CGFloat) -> NSMutableAttributedString {
    let mus = NSMutableAttributedString(attributedString: attributedString)
    mus.enumerateAttribute(.font, in: NSRange(location: 0, length: mus.string.count)) { (value, range, stop) in
        if let oldFont = value as? UIFont {
            let newFont = oldFont.withSize(size)
            mus.addAttribute(.font, value: newFont, range: range)
        }
    }
    return mus
  }
}

工作:

    label.attributedText = GuiUtils.setAttributedStringToSize(attributedString: attributedString, size: fontSize)

不起作用:

    mutableAttributedString.replaceCharacters(in: gapRange, with: filledGap)
    label.attributedText = GuiUtils.setAttributedStringToSize(attributedString: mutableAttributedString.replaceCharacters, size: fontSize)

以某种方式,替换的文本不会更改其大小。

1 个答案:

答案 0 :(得分:2)

打扰一下,但是您确定您的filledGap属性字符串具有font属性吗?因为如果不这样做,那么enumerateAttribute块将不会处理此部分。

在这种情况下,您的解决方法是将所有字体设置为整个filledGap字符串,以确保其一部分将由enumerateAttribute块处理。