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

Swift中如何实现字符串包含下标字母?

在Swift中实现字符串下标效果的几种方法

嘿,我完全懂你想要给字符串里的部分字母加上下标显示的需求,在Swift里其实有几个非常实用的实现方式,我给你详细拆解一下,都是可以直接拿来用的方案:

1. 用Swift原生的AttributedString(iOS 15+/macOS 12+)

这是苹果推荐的新方式,代码更简洁易读。你可以给指定范围的文本设置baselineOffset属性来实现下标效果:

var attributedString = AttributedString("H₂O")
// 找到要设置下标的字符范围
if let range = attributedString.range(of: "₂") {
    attributedString[range].baselineOffset = -6 // 负数表示向下偏移,数值可以根据需求调整
    attributedString[range].font = .systemFont(ofSize: 12) // 也可以同时缩小字体,让下标更自然
}

// 然后把这个AttributedString赋值给UILabel的attributedText
let label = UILabel()
label.attributedText = NSAttributedString(attributedString)

如果是动态生成的字符串,比如要把某个特定位置的字符转成下标,也可以这样写:

let baseText = "H"
let subscriptText = "2"
let fullText = baseText + subscriptText

var attributedString = AttributedString(fullText)
let subscriptRange = attributedString.index(attributedString.end, offsetBy: -subscriptText.count)..<attributedString.end
attributedString[subscriptRange].baselineOffset = -6
attributedString[subscriptRange].font = .systemFont(ofSize: 12)

2. 兼容旧版本的NSAttributedString

如果你的项目需要支持iOS 14及以下,就用传统的NSAttributedString来实现:

let fullText = "H₂O"
let attributedText = NSMutableAttributedString(string: fullText)

// 设置下标属性:baselineOffset设为负数,同时缩小字体
let subscriptAttributes: [NSAttributedString.Key: Any] = [
    .baselineOffset: -6,
    .font: UIFont.systemFont(ofSize: 12)
]

// 找到要设置下标的范围
if let range = fullText.range(of: "₂") {
    let nsRange = NSRange(range, in: fullText)
    attributedText.setAttributes(subscriptAttributes, range: nsRange)
}

let label = UILabel()
label.attributedText = attributedText

3. 使用Unicode下标字符(无需富文本)

如果你的下标是一些常见的字母或数字,其实可以直接用对应的Unicode下标字符,这样不需要设置富文本,直接拼接字符串即可:

比如常见的下标字符:

  • 数字:₀、₁、₂、₃、₄、₅、₆、₇、₈、₉
  • 字母:ₐ、ₑ、ᵢ、ₒ、ᵤ、ₚ、ₛ、ₜ

示例代码:

// 直接拼接Unicode下标字符
let waterText = "H₂O"
let formulaText = "C₆H₁₂O₆"

// 直接赋值给UILabel的text属性就行
let label = UILabel()
label.text = formulaText

这种方式的好处是不需要处理富文本,适合简单的固定下标场景,但缺点是只有部分字符有对应的Unicode下标,自定义程度不如前两种方法。

你可以根据自己的项目版本和需求选择合适的方法,要是还有细节需要调整,随时说~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:12:25