HStack внутри ScrollView странно анимирует при открытии представления
Итак, я пытался реализовать расширение / сокращение строк в a для каждого встроенного в представление списка, и оказалось, что ячейки представления списка не анимируются плавно. После ознакомления с этим руководством он предлагает использовать режим прокрутки с foreach, потому что он анимирует более плавно. Расширение / сжатие работает нормально, но непредвиденные побочные эффекты возникают только тогда, когда я впервые открываю страницу. Кажется, что HStack начинает сглаженным с левой стороны представления и анимируется, расширяясь до своего обычного начального положения. Я замедлил анимацию в видео, чтобы ее было легче увидеть, и удалил ForEach, так как это не кажется причиной проблем. Я не знаю, что вызывает это, и поиск в Google не дал ответов. Есть ли у кого-нибудь здесь ответ или хоть какой-то совет? Очень признателен
@State var showTemp: Bool = false
var body: some View {
ScrollView(.vertical, showsIndicators: false) {
HStack(alignment: .top) {
Text("Hello")
.font(.system(size: 32))
if showTemp {
VStack {
Text("Middle 1")
Text("Middle 2")
Text("Middle 3")
Text("Middle 4")
Text("Middle 5")
}
}
Spacer()
Text("Goodbye")
}
.border(Color.black, width: 2)
.onTapGesture {
self.showTemp.toggle()
}
.background(Color.blue)
.animation(.default)
}
.background(Color.green)
.onAppear(perform: loadMethod)
}
1 ответ
Кажется, я ответил на свой вопрос после того, как посмотрел на проблему под другим углом. Использование GeogetryReader и установка ширины кадра HStack на geometry.size.width исправили это.
Я думаю, что это работает, потому что без указания ширины HStack заполняет как можно большую площадь. По какой-то причине он начинает раздавливаться, когда представление загружается, а затем расширяется, чтобы заполнить свою область, которая, я думаю, не отображается, если вы не примените к ней анимацию.
Пытаясь быть здесь полезным, я не хочу быть одним из тех людей, которые отвечают на свои вопросы, но не показывают, какой на них ответ.