Форматирование десятичных чисел в текстовом представлении SwiftUI: методы и примеры

Для форматирования десятичных чисел в представлении 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
            }
        }
    }
}