См. Этот пример представления, демонстрирующий проблему:
struct ListRemovalTransition: View {
let list1 = ["A", "B", "C", "D"]
let list2 = ["A", "E", "F", "G", "H", "I", "J", "K"]
@State var toggle = false
var chosenList: [String] {
toggle ? list1 : list2
}
var body: some View {
VStack {
Toggle(isOn: $toggle) {
Text("Switch List")
}
List(chosenList, id: \.self) { item in
Text(item)
.transition(AnyTransition.opacity.animation(.default))
}
}
.padding()
}
}
struct ListRemovalTransition_Previews: PreviewProvider {
static var previews: some View {
ListRemovalTransition()
}
}
Желаемый результат состоит в том, что отдельные строки исчезают при удалении без меняя положение. Вместо этого кажется, что все строки сначала перекрывают друг друга, а потом удаляются. Я добавил переход с анимацией в строку Text, но это не повлияло.