NSMutableAttributedString

NSMutableAttributedString

我有一个标签,它使用 NSMutableAttributedString 将文本写为:

ios - 如何向 NSMutableAttributedString 添加填充?-LMLPHP

我想要做的是降低星号的顶部填充,以便它的 midY 与下面的 Cuisine 一词一致:

ios - 如何向 NSMutableAttributedString 添加填充?-LMLPHP

如何使用 NSMutableAttributedString 添加填充?

我知道我可以单独使用星号创建一个单独的标签,并使用带有常量的 anchor 将其居中,但我想看看使用 NSMutableAttributedString 是如何实现的

let cuisineLabel: UILabel = {
    let label = UILabel()
    label.translatesAutoresizingMaskIntoConstraints = false

    let attributedText = NSMutableAttributedString(string: "Cuisine ", attributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 17), NSAttributedStringKey.foregroundColor: UIColor.lightGray])

    attributedText.append(NSAttributedString(string: "*", attributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 24), NSAttributedStringKey.foregroundColor: UIColor.red]))

    label.attributedText = attributedText

    return label
}()

最佳答案

baselineOffset 属性键用于此目的。

let cuisine = NSMutableAttributedString(string: "Cuisine")
let asterisk = NSAttributedString(string: "*", attributes: [.baselineOffset: -3])
cuisine.append(asterisk)

ios - 如何向 NSMutableAttributedString 添加填充?-LMLPHP

显然,您必须使用文本其余部分的字体大小来计算偏移量。这就是为什么我认为使用全角星号 (*) 更容易的原因。

带有全角星号的结果(您可能希望其字体大小与字符串其余部分的字体大小成比例):

ios - 如何向 NSMutableAttributedString 添加填充?-LMLPHP

关于ios - 如何向 NSMutableAttributedString 添加填充?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52336075/

10-10 02:11