因此,我试图在嵌入在列表视图中的for each中实现扩展/收缩行,结果发现列表视图单元格的动画效果并不流畅。在查看this tutorial之后,它建议使用带有foreach的滚动视图,因为它的动画效果更流畅。扩展/收缩可以正常工作,但只有在我第一次打开页面时才会有意外的副作用。HStack在开始时显示为在视图的左侧展平,并以动画形式扩展到其正常的开始位置。我已经放慢了视频中的动画速度,以便更容易看到,而且我删除了ForEach,因为它似乎不是问题的原因。我不知道这是什么原因,谷歌搜索也没有得到任何答案。在座的任何人都有答案或者至少有一些建议吗?非常感谢
@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)
}
发布于 2020-03-31 22:16:59
在我从不同的角度看问题之后,我似乎已经回答了我自己的问题。使用GeogetryReader并将HStack的框架宽度设置为geometry.size.width解决了这个问题。
我认为这是可行的,因为在不指定宽度的情况下,HStack会尽可能多地填充区域。由于某些原因,当视图加载时,它开始被粉碎,然后扩展到填充它的区域,我猜除非你对它应用动画,否则它是不可见的。
试图在这里提供帮助,我不想成为那些回答自己的问题但没有显示答案的人中的一员。
https://stackoverflow.com/questions/60960607
复制