Tom*_*ton 3 ios swift3 nsmeasurementformatter measurementformatter
这类似于我昨天提出的问题,但我得到的答案在这种情况下似乎不起作用.
我从Core Location获得了以米为单位的海拔高度值.我想以本地化的形式显示这些内容.举个例子,我现在的海拔高度是海拔1839米.这应该显示为6033英尺.我能做的最好的MeasurementFormatter是"1.143英里".
let meters : Double = 1839
let metersMeasurement = Measurement(value: meters, unit: UnitLength.meters)
let measurementFormatter = MeasurementFormatter()
measurementFormatter.locale = Locale(identifier: "en_US")
let localizedString = measurementFormatter.string(from: metersMeasurement)
Run Code Online (Sandbox Code Playgroud)
.naturalScale回答我之前的问题的选项在这里没有帮助.我认为这是框架的限制,但我想知道是否有人现在有一个解决方法.
只需创建一个Double扩展即可将您的仪表单位转换为英尺.然后只需使用MeasurementFormatter根据需要显示它:
extension Double {
var metersToFeet: Double {
return Measurement(value: self, unit: UnitLength.meters)
.converted(to: .feet)
.value
}
}
Run Code Online (Sandbox Code Playgroud)
操场
extension Formatter {
static let measurement: MeasurementFormatter = {
let formatter = MeasurementFormatter()
formatter.locale = Locale(identifier: "en_US")
formatter.unitOptions = .providedUnit
formatter.numberFormatter.maximumFractionDigits = 0
formatter.unitStyle = .long
return formatter
}()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2276 次 |
| 最近记录: |