You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置UILabel的行高?

Swift 中UILabel自定义行高的可复用实现方案

我此前检索相关解决方案时,未在StackOverflow找到可直接复用的稳定实现,调整现有公开方案后整理出以下兼容多场景的实现,可直接使用:

  • 首先给UILabel加扩展,内置行高偏移修正,避免文字显示位置偏上的问题,代码如下:
import UIKit

extension UILabel {
    /// 为Label设置自定义行高
    /// - Parameters:
    ///   - targetLineHeight: 自定义的目标行高
    ///   - textAlignment: 文本对齐方式,默认值为靠左对齐
    func setLineHeight(_ targetLineHeight: CGFloat, textAlignment: NSTextAlignment = .left) {
        guard let currentText = text else { return }
        let paragraphStyle = NSMutableParagraphStyle()
        paragraphStyle.minimumLineHeight = targetLineHeight
        paragraphStyle.maximumLineHeight = targetLineHeight
        paragraphStyle.alignment = textAlignment
        paragraphStyle.lineBreakMode = lineBreakMode
        
        // 修正文本垂直偏移,适配不同字号的显示效果
        let baselineOffset = (targetLineHeight - font.lineHeight) / 4
        let attributedContent = NSAttributedString(
            string: currentText,
            attributes: [
                .paragraphStyle: paragraphStyle,
                .baselineOffset: baselineOffset,
                .font: font as Any,
                .foregroundColor: textColor as Any
            ]
        )
        attributedText = attributedContent
    }
}
  • 调用方式非常简单,直接对目标Label实例调用方法即可:
let demoLabel = UILabel()
demoLabel.text = "这是一段多行测试文本,用于验证自定义行高的显示效果,你可以根据需求自由调整目标行高参数。"
demoLabel.numberOfLines = 0
// 设置行高为24pt
demoLabel.setLineHeight(24)

注意:修改Label的text属性后需要重新调用行高设置方法,新文本才会应用自定义行高;如果你的项目需要兼容自定义属性文本,可以基于上述逻辑自行扩展适配attributedText的版本。


内容的提问来源于stack exchange,提问作者Daniyar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 04:30:01