SwiftUI技术问题:如何隐藏Measurement的单位显示
在SwiftUI中处理Measurement显示的两种方案
方案1:完全隐藏单位
如果只需要显示数值部分,可以直接提取Measurement转换后的数值,用数字格式化样式单独处理:
struct MeasurementStyle: View { var body: some View { let speed = Measurement(value: 50, unit: UnitSpeed.kilometersPerHour) // 先将单位转换为目标单位,再提取数值 let convertedValue = speed.converted(to: .milesPerHour).value // 格式化数值,这里设置小数位数为0 Text("\(convertedValue, format: .number.precision(.fractionLength(0)))") } }
这段代码会输出31,完全不带单位。
方案2:单位使用不同字号显示
要让数值和单位字号不同,可以把两者拆分成两个Text组件,通过HStack组合并分别设置字体:
struct MeasurementStyle: View { var body: some View { let speed = Measurement(value: 50, unit: UnitSpeed.kilometersPerHour) let convertedSpeed = speed.converted(to: .milesPerHour) // 格式化数值部分 let valueText = "\(convertedSpeed.value, format: .number.precision(.fractionLength(0)))" // 获取单位的符号 let unitText = convertedSpeed.unit.symbol HStack(spacing: 2) { Text(valueText) .font(.title) // 数值用大字号 Text(unitText) .font(.caption) // 单位用小字号 } } }
这样会显示大号的31和小号的mph,视觉上区分开。
内容的提问来源于stack exchange,提问作者DJJazz
相关产品推荐
相关产品推荐

