Я пытаюсь сделать заполнение VStack согласованным независимо от содержимого, и, похоже, в некоторых случаях оно не работает (как если бы Scrollview вместо этого выровнялся по центру).
В идеале я хотел бы, чтобы отступы были одинаковыми независимо от содержимого на экране.
Например, это (когда заполнение не соответствует):
Вот используемый код:
var body: some View {
VStack {
HStack{
Button(action: {}) {
Image(systemName: "arrow.backward")
}
Spacer(minLength: 0)
Button(action: {}) {
Image(systemName: "bookmark")
}
}
.padding(.vertical, 10)
ScrollView {
VStack{
HStack{
VStack (alignment: .leading, spacing: 5) {
Text("Today's Poem, \(currentDate)")
if let poem = fetch.poems.first {
Text("\(poem.title)")
Text("BY "+poem.author.uppercased())
VStack (alignment: .leading) {
ForEach(poem.lines, id: \.self) {
Text($0)
.multilineTextAlignment(.leading)
}
}
} else {
Spacer()
}
}
}
}
}
Button("Get Next Poem") { fetch.getPoem() }
}
.background(Color.white.ignoresSafeArea())
.padding(.horizontal)
}
}
Есть идеи? Заранее спасибо.
Измените самое сокровенное
VStack {
к
VStack(alignment: .leading) {
** Редактировать, выравнивание теперь работает, но отступы по-прежнему несовместимы.
Я бы добавил .lineSpacing(0) к вашему заголовку, и я предполагаю, что вам нужен интервал 5 для фактического текста стихотворения, и в этом случае вы также должны добавить это в самый внутренний VStack. Удачи с вашим проектом!
(1) Вы не должны принимать ответ, если он не полностью отвечает на ваш вопрос, (2) при возникновении подобных проблем самый простой способ отладки — добавить .background(Color.__) ко всем вашим стекам и вы увидите, где края рамок не совпадают. (3) В вашем коде вы не установили выравнивание почти ни для одного из стеков или фреймов. Я предполагаю, что добавление .frame(maxWidth: .infinity,alignment:.leading) в ваш VStack решит многие ваши проблемы.
Спасибо за помощь. Это лучше (например, более последовательно), но в некоторых случаях все еще кажется отброшенным. В большинстве случаев, когда заголовок состоит из 2 строк или более. Есть идеи, почему?