我一直在尝试使用 MeasurementFormatter
尝试将英制长度显示为 10'6"
或 10 ft 6 in
但未成功。LengthFormatter
在 isForPersonHeightUse
设置为 true
时正确执行此操作,但它不能很好地适应用户的区域设置(即长度以公制测量的国家,除非提到高度)。有没有办法在格式化程序中强制执行此行为?
编辑 这question是确定如何选择测量单位。我可以选择英尺或英寸,但想将英尺的分数显示为英寸,例如:6'3"而不是 6.25 英尺。
最佳答案
public struct LengthFormatters {
public static let imperialLengthFormatter: LengthFormatter = {
let formatter = LengthFormatter()
formatter.isForPersonHeightUse = true
return formatter
}()
}
extension Measurement where UnitType : UnitLength {
var heightOnFeetsAndInches: String? {
guard let measurement = self as? Measurement<UnitLength> else {
return nil
}
let meters = measurement.converted(to: .meters).value
LengthFormatters.imperialLengthFormatter.string(fromMeters: meters)
}
}
使用示例:
let a = Measurement(value: 6.34, unit: UnitLength.feet)
print(a.heightOnFeetsAndInches ?? "")
let b = Measurement(value: 1.5, unit: UnitLength.feet)
print(b.heightOnFeetsAndInches ?? "")
将打印:
6 ft, 4.08 in
1 ft, 6 in
关于ios - MeasurementFormatter 显示英尺和英寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42252619/