Список SwiftUI со стилем InsetGroupedListStyle обновляет правильную высоту строки только после прокрутки

#ios #swiftui #swiftui-list

Вопрос:

У меня есть список в SwiftUI с. InsetGroupedListStyle Как правило, это работает хорошо, но иногда высота текста в разделе будет неправильной до тех пор, пока он не будет прокручиваться. По-видимому, это зависит от длины текста. Я добавил .fixedSize(horizontal: false, vertical: true) , что помогает в некоторых случаях, но не во всех.

Есть ли что-нибудь еще, что я могу сделать, чтобы заставить представление правильно расположиться, или это ошибка? Он также не работает в iOS 15.

В приведенном ниже примере URL-адрес показан в виде текста, но я видел это в других сценариях с простым текстом.

 import SwiftUI

struct ContentView: View {
    var body: some View {
        List {
            Section(header: Text("Header Title")) {
                VStack {
                    Spacer()
                        .frame(height: 8)
                    Text("https://example.govt.nz/notice/id/2021-go1593")
                        .fixedSize(horizontal: false, vertical: true)
                }
            }
        }
        .listStyle(InsetGroupedListStyle())
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
 

Изначально выглядит так:

введите описание изображения здесь

После прокрутки выглядит так:

введите описание изображения здесь

Если я удалю VStack и распорку, проблема все еще существует, хотя и не так заметна, но все еще существует:

 List {
    Section(header: Text("Header Title")) {
        Text("https://example.govt.nz/notice/id/2021-go1593")
            .fixedSize(horizontal: false, vertical: true)
    }
}
.listStyle(InsetGroupedListStyle())
 

На этот раз перед прокруткой:

введите описание изображения здесь

И после прокрутки:

введите описание изображения здесь

Комментарии:

1. Для меня как с этим, так и без fixedSize этого все работает нормально, убедитесь, что вы можете воспроизвести его на игровой площадке.

2. Спасибо, Филип, я изменил код, чтобы показать свой точный сценарий. Хотя я сталкивался с таким поведением во многих других сценариях. Если вы протестируете вышесказанное на iphone12 PRO MAX, вы увидите проблему.