Это мой текущий код и результат его запуска:
Код: Выделить всё
import SwiftUI
struct Test: Hashable, Decodable {
var label: String
var value: String
var key: String
}
struct TestView: View {
@State private var fields: [Test] = [
Test(label: "label1", value: "value1value1", key: "KEY1"),
Test(label: "label2", value: "value2value2value2value2value2value2value2value2value2value2value2value2", key: "KEY2"),
Test(label: "label3", value: "value3value3value3", key: "KEY3")
]
var body: some View {
HStack {
ForEach(fields.indices, id: \.self) { index in
let field = fields[index]
if index > 0 {
Spacer(minLength: 10)
}
VStack(alignment: .leading) {
Text(field.label)
.lineLimit(1)
.font(.system(size: 16, weight: .bold))
Text(field.value)
.lineLimit(1)
.minimumScaleFactor(0.4)
}
}
}
}
}

В этом случае размер шрифта метки фиксирован, а vlaue — это значение, введенное пользователем в будущем. Согласно результату выполнения кода, мы видим, что размер шрифта значения1 и значения3 будет намного больше размера шрифта значения2 (и это правильно). Я надеюсь добиться уменьшения размера шрифта значения1 и значения3, чтобы сделать их ближе к шрифту значения2. Вместо того, чтобы сохранять одинаковый размер шрифта, это сделает весь дисплей HStack более красивым.
Это то, чего я ожидал:

Похоже, что основная причина этой проблемы заключается в том, что HStack назначает ширину для каждого элемента, даже если текста меньше, его можно выделить на большую ширину, поэтому разница в размерах шрифтов текста велика; Но я не знаю, как изменить такое поведение HStack, или есть ли другой ярлык, который может заменить HStack?
Если кто-нибудь может помочь, буду очень признателен! Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/793 ... tor-is-set
Мобильная версия