import SwiftUI
struct DynamicRectangle: View {
@State private var isExpanded = false
var body: some View {
Rectangle()
.fill(Color.blue)
.frame(width: 200, height: isExpanded ? 400 : 200)
.animation(.spring())
.onTapGesture {
self.isExpanded.toggle()
}
}
}
struct ContentView: View {
var body: some View {
List {
DynamicRectangle()
DynamicRectangle()
DynamicRectangle()
}
}
}
这是一个仍然存在明显问题的小示例:尽管大小变化动画平滑,但列表本身会立即更改其行大小。是否有任何解决方法可以使其对行大小以及我内部的内容大小进行动画处理?
谢谢!
最佳答案
当我使用 ScrollView
时,它工作得很好:
import SwiftUI
struct DynamicRectangle: View {
@State private var isExpanded = false
var body: some View {
Rectangle()
.fill(Color.blue)
.frame(width: 200, height: isExpanded ? 400 : 200)
.animation(.spring())
.onTapGesture {
self.isExpanded.toggle()
}
}
}
struct ContentView: View {
var body: some View {
ScrollView {
DynamicRectangle()
DynamicRectangle()
DynamicRectangle()
}
}
}
与 List
相比,我更喜欢 ScrollView
。
关于ios - SwiftUI:如何在列表内正确设置内容大小变化的动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58932825/