ios - MeasurementFormatter 显示英尺和英寸

标签 ios swift formatter measurementformatter

我一直在尝试使用 MeasurementFormatter 尝试将英制长度显示为 10'6"10 ft 6 in 但未成功。LengthFormatterisForPersonH​​eightUse 设置为 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/

相关文章:

ios - 设备上的 PureLayout : unrecognized selector sent to instance

javascript - HERE折线编码: JavaScript -> Swift

ios - Swift 库和 Objective-C 库通过 Cocoapods 结合在一起

ios - 转到另一个 Storyboard,但导航 Controller 仍然可见

c++ - 在 C++ 代码中按字母顺序自动排序函数

ios - 如何使用 AttributedString 正确设置 UILabel 的行高?

ios - indexPath 在所有行中返回 0

algorithm - 检查一个点是否在一个简单的多边形内

excel - 格式化程序参数作为 null 传递

javascript - 渲染图表后,从图表对象更改 Highcharts 工具提示格式化程序