Я пытаюсь отобразить значение Текстовое поле с замыкающим выравниванием.
Как видите, значение 34,3 отображается с выравниванием по началу.
Я уверен, что мне не хватает чего-то очевидного, но я не могу понять, что. Есть идеи?
@State private var endwert = 34.3
var numberFormatter: NumberFormatter {
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.locale = Locale.current
return formatter
}
...
HStack {
Text("Endwert")
.frame(width: nil, height: nil, alignment: .topTrailing)
.background(Color .green)
Spacer()
TextField($endwert, formatter: numberFormatter)
.background(Color.yellow)
.frame(width: nil, height: nil, alignment: .trailing)
Text("m2")
}
Я исходил из этого. Без форматирования чисел результат был таким же. На самом деле я надеялся, что с помощью numberformater swiftui решит, что это число, и выровняет трейлинг. Но это не так.
Добавьте .multilineTextAlignment(.trailing)
в ваше TextField:
TextField($endwert, formatter: numberFormatter)
.multilineTextAlignment(.trailing)
...
Что приводит к:
Спасибо. Вот и все! И снова решение было очевидным... Я не пробовал модификаторы multiline*, потому что думал: "Нет... Я здесь не многострочный".
Попробуйте заменить аргументы TextField строковым литералом «34.3». Средство форматирования чисел выглядит хорошо, НО если после числа каким-то образом добавляется пробел, то выравнивание в конце в вашем примере будет правильным. Проще говоря. После вашего номера не должно быть пробела (пустое место с желтым фоном)