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 заполняет как можно большую площадь. По какой-то причине он начинает раздавливаться, когда представление загружается, а затем расширяется, чтобы заполнить свою область, которая, я думаю, не отображается, если вы не примените к ней анимацию.

Пытаясь быть здесь полезным, я не хочу быть одним из тех людей, которые отвечают на свои вопросы, но не показывают, какой на них ответ.

Другие вопросы по тегам