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
相关产品推荐
相关产品推荐

