我試圖以Measurement<UnitLength>公里或英里為單位格式化 a ,但如果測量值和區域設定合適,則不是斯堪的納維亞英里> 10 km。
我想使用 Swift 和 Foundation 的新.formattedAPI,但還沒有找到合適的檔案來調整單元樣式。
簡而言之,我想像以下示例一樣呈現距離:
- 如果以英里為單位顯示,請顯示
3.5 mi - 如果以公里顯示,則顯示
7.1 km - 如果以公里顯示但超過 10 公里,則顯示
13.5 km,現在顯示(瑞典語)1.4 mil
我在 SwiftUI 中使用以下代碼來格式化距離文本
Text(distance.formatted(.measurement(width: .abbreviated, usage: .road)))
這是我用來顯示問題的一些測驗代碼:
import SwiftUI
struct TestView: View {
@Environment(\.locale) var locale
private let distance1 = Measurement(value: 7.04765, unit: UnitLength.kilometers)
private let distance2 = Measurement(value: 13.4657, unit: UnitLength.kilometers)
var body: some View {
VStack {
Text(distance1.formatted(.measurement(width: .abbreviated, usage: .road).locale(locale)))
Text(distance2.formatted(.measurement(width: .abbreviated, usage: .road).locale(locale)))
}
}
}
struct TestView_Previews: PreviewProvider {
static var previews: some View {
Group {
TestView() // Swedish
.environment(\.locale, .init(identifier: "sv_SE"))
TestView() // American English
.environment(\.locale, .init(identifier: "en_US"))
TestView() // French
.environment(\.locale, .init(identifier: "fr_FR"))
}
.previewLayout(.sizeThatFits)
.padding()
}
}
此代碼生成以下內容:
uj5u.com熱心網友回復:
.general而不是.road會根據語言環境為您提供公里或英里。.asProvided將為您提供原始測量中定義的單位。
我認為.general讓你最接近你想要的,盡管它最終可能會為你提供非公里范圍值的米或碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/345357.html
