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()
}
}
}
这是一个很小的示例,仍然有一个明显的问题:尽管大小变化正在平滑地进行动画处理,但List本身立即更改了其行大小。是否有任何变通办法可以使行大小与我内部的内容大小一起动画?
谢谢!
答案 0 :(得分:1)
当我使用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()
}
}
}
相对于ScrollView
,我更喜欢List
。