只需复制并粘贴代码即可查看行为。我想确认我做错了什么还是一个错误?
import SwiftUI
struct StackOverflow13: View {
@State var hide: Bool = false
var body: some View {
VStack {
Spacer()
Button(action: {
self.hide.toggle()
}) {
Text("Hide")
}
Spacer()
if(!hide) {
ScrollView(.horizontal, showsIndicators: false) {
HStack {
ForEach(1...20, id:\.self) {
Text("\($0)")
}
}
}
.frame(height: 50, alignment: .center)
.padding()
.background(Color.red)
.animation(.linear)
.transition(.move(edge: .bottom))
}
}.edgesIgnoringSafeArea(.all)
}
}
struct StackOverflow13_Previews: PreviewProvider {
static var previews: some View {
StackOverflow13()
}
}
运行代码并按Hide
号将无限地震动,如果我删除了.transition
修饰符,一切似乎都正常。
同样重要的是要注意删除.edgesIgnoringSafeArea
修饰符会解决该问题,但我确实需要此修饰符。
答案 0 :(得分:1)
在您的iPhone(10到11)上,我的代码出现了相同的抖动行为,但在较旧的iPhone和ipad上却没有。但是如果我使用
.frame(height: 70, alignment: .center)
震动消失了。我的猜测是,在某些设备/分辨率上,没有足够的空间来渲染/布局height = 50的ScrollView。
使用macOS 10.15.5,Xcode 11.5和11.6 beta,目标ios 13.5和mac催化剂。在真实设备iPhone和iPad以及各种(但不是全部)模拟器上进行了测试。