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

SwiftUI中Measurement格式化如何默认显示毫升/液量盎司?

解决SwiftUI中Measurement体积单位显示为立方单位的问题

默认情况下,Measurement的formatted()方法会对体积使用通用体积单位(如立方厘米/立方英寸),但如果需要显示液体专用单位(毫升/液量盎司),可以通过指定MeasurementFormatStyle的usage参数为.liquid来实现,同时保留系统内置的本地化适配,无需手动处理locale。

正确实现代码

直接在formatted()中传入带usage: .liquid的格式配置即可:

Text("\(Measurement(value: Double(volume), unit: UnitVolume.milliliters).formatted(.measurement(usage: .liquid)))")
// 质量和温度的原有写法无需改动
Text("\(Measurement(value: Double(mass), unit: UnitMass.grams).formatted())")
Text("\(Measurement(value: Double(temp), unit: UnitTemperature.celsius).formatted())")

原理说明

  • usage: .liquid会告诉系统使用液体体积的本地化单位体系:当locale为英文(如en_US)时,会自动转换为液量盎司(fl oz);中文locale下则显示毫升(ml),完全由系统处理本地化逻辑。
  • 对比你之前的usage: .asProvided写法,这种方式无需手动适配不同locale的单位转换,保留了formatted()的自动本地化能力。

补充样式控制

如果需要进一步控制单位的显示样式(缩写/完整名称),可以结合width参数:

// 显示缩写单位(ml/fl oz)
.formatted(.measurement(usage: .liquid, width: .abbreviated))
// 显示完整单位(毫升/液量盎司)
.formatted(.measurement(usage: .liquid, width: .wide))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 08:22:06