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

