Swiftui 带底部过渡的ScrollView出现了奇怪的行为?
只需复制并粘贴代码即可查看行为。我想确认我是否做错了什么,或者这是一个bugSwiftui 带底部过渡的ScrollView出现了奇怪的行为?,swiftui,swiftui-animation,Swiftui,Swiftui Animation,只需复制并粘贴代码即可查看行为。我想确认我是否做错了什么,或者这是一个bug import SwiftUI struct StackOverflow13: View { @State var hide: Bool = false var body: some View { VStack { Spacer() Button(action: { self.hide.toggle()
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
修饰符可以解决这个问题,但我确实需要这个修饰符。我在iPhone(10到11)上的代码有相同的抖动行为,但在旧款iPhone和iPad上没有。但是如果我使用
.frame(height: 70, alignment: .center)
震动消失了。我的猜测是,在某些设备/分辨率上,没有足够的空间渲染/布局高度为50的ScrollView
使用macos 10.15.5、Xcode 11.5和11.6 beta版,以ios 13.5和MacCatalyst为目标。在真实设备iPhone和iPad以及各种但并非所有模拟器上进行测试 是的,我在不同的屏幕尺寸上看到相同的行为,我会向苹果公司提交一份错误报告。谢谢你的努力。