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

Swift实现温度值与摄氏度符号不同字号且对齐的方法

温度数值与摄氏度符号的差异化字号对齐方案

你当前的代码仅设置了不同字号,但未调整垂直对齐逻辑,导致摄氏度符号位置不符合预期。只需给摄氏度符号的富文本添加**基线偏移(baselineOffset)**属性,就能让符号对齐到数值的上部区域,实现你想要的效果。

修改后的代码:

let attrString = NSMutableAttributedString(string: temperature.value,
                                           attributes: [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 36)])

let degreeAttr = NSMutableAttributedString(string: "°",
                                           attributes: [
                                            NSAttributedString.Key.font: UIFont.systemFont(ofSize: 18),
                                            NSAttributedString.Key.baselineOffset: 12 // 可根据实际显示效果微调该值
                                           ])

attrString.append(degreeAttr)
temperature = attrString

核心原理:

默认文本以基线对齐,小字号的摄氏度符号会落在大数值的基线位置,视觉上偏下。设置baselineOffset为正数可让符号向上偏移,对齐到数值的右上角区域。你可以根据实际显示效果上下微调偏移值,直到匹配期望样式。

如果需要更精细的控制,还可以尝试:

  • 给符号设置和数值同权重的字体(比如都用粗体),让视觉风格更统一
  • 微调kern(字间距)属性,调整符号与数值之间的距离

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 21:35:25