如何使NSMutableAttributedString设置minimumLineHeight后文本垂直居中?
解决NSMutableAttributedString设置minimumLineHeight后文本垂直居中的问题
当设置minimumLineHeight时,文本默认基于基线对齐,视觉上会偏行底。要实现垂直居中,需通过调整基线偏移量修正位置,具体实现如下:
计算基线偏移值
偏移量计算公式:(设置的最小行高 - 字体实际行高) / 2,该值可让文本在指定行高范围内垂直居中。调整后的代码示例
let targetFont = UIFont.systemFont(ofSize: 16) // 替换为你的实际字体 let targetLineHeight = 24 // 你的目标最小行高 let paragraphStyle = NSMutableParagraphStyle() paragraphStyle.minimumLineHeight = targetLineHeight // 计算垂直居中所需的基线偏移 let baselineOffset = (targetLineHeight - targetFont.lineHeight) / 2 let attributedText = NSMutableAttributedString(string: "你的目标文本内容") let fullRange = NSRange(location: 0, length: attributedText.length) attributedText.addAttribute(.paragraphStyle, value: paragraphStyle, range: fullRange) attributedText.addAttribute(.baselineOffset, value: baselineOffset, range: fullRange) attributedText.addAttribute(.font, value: targetFont, range: fullRange)效果说明
- 调整前:文本紧贴行底部(对应你提到的“当前文本对齐效果”)
- 调整后:文本在
minimumLineHeight设定的行高内垂直居中(对应你期望的效果)
该方法同样适用于多行文本,基线偏移会作用于每一行,确保每行都在自身行高范围内居中。
内容的提问来源于stack exchange,提问作者Konstantin.Efimenko
相关产品推荐
相关产品推荐

