Для форматирования десятичных чисел в представлении TextSwiftUI вы можете использовать класс NumberFormatterиз платформы Foundation. Вот несколько методов, которые вы можете использовать, а также примеры кода:
Метод 1: использование NumberFormatter в модификаторе представления
Content) ->some View {
content
.onAppear {
formatter.locale = Locale.current // При необходимости настройте локаль
.onDisappear {
formatter.locale = nil
.font(.headline) // При необходимости настройте шрифт
.foregroundColor(.blue) // При необходимости настройте цвет
.multilineTextAlignment(.center) // При необходимости настройте выравнивание
.padding() // При необходимости настройте отступы
.background(Color.yellow) // При необходимости настройте фон
Метод 2. Использование вычисляемого свойства в представлении
import SwiftUI
struct ContentView: View {
let number = 1234.5678
var formattedNumber: String {
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 2
formatter.locale = Locale.current // Customize the locale if needed
return formatter.string(from: NSNumber(value: number)) ?? ""
}
var body: some View {
Text(formattedNumber)
.font(.headline) // Customize the font if needed
.foregroundColor(.blue) // Customize the color if needed
.multilineTextAlignment(.center) // Customize the alignment if needed
.padding() // Customize the padding if needed
.background(Color.yellow) // Customize the background if needed
}
}
Метод 3. Использование пользовательского ViewSwiftUI со свойством Binding
import SwiftUI
struct DecimalFormattedText: View {
@Binding var number: Double
var body: some View {
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 2
formatter.locale = Locale.current // Customize the locale if needed
return Text(formatter.string(from: NSNumber(value: number)) ?? "")
}
}
struct ContentView: View {
@State private var number = 1234.5678
var body: some View {
VStack {
DecimalFormattedText(number: $number)
.font(.headline) // Customize the font if needed
.foregroundColor(.blue) // Customize the color if needed
.multilineTextAlignment(.center) // Customize the alignment if needed
.padding() // Customize the padding if needed
.background(Color.yellow) // Customize the background if needed
Button("Change Number") {
number = 9876.5432 // Example of changing the number dynamically
}
}
}
}