jja*_*tie 7 formatter ios swift measurementformatter
我一直在玩,MeasurementFormatter试图显示英制10"6'或10 ft 6 in不成功的长度.设置LengthFormatter为时会正确执行此操作,但它不能很好地适应用户的区域设置(即,以度量为单位测量长度的国家/地区除外,指的是高度).有没有办法在格式化程序中强制执行此行为?isForPersonHeightUsetrue
编辑 此问题是确定如何选择测量单位.我可以选择英尺或英寸,但希望显示小数英尺,如: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)
}
}
Run Code Online (Sandbox Code Playgroud)
使用示例:
let a = Measurement(value: 6.34, unit: UnitLength.feet)
print(a.heightOnFeetsAndInches ?? "")
let b = Measurement(value: 1.5, unit: UnitLength.feet)
print(b.heightOnFeetsAndInches ?? "")
Run Code Online (Sandbox Code Playgroud)
将打印:
6 ft, 4.08 in
1 ft, 6 in
Run Code Online (Sandbox Code Playgroud)