[英]SwiftUI animations break screen rotation
我搜索了高低,但我似乎在互联网上的任何地方都找不到任何提到这个问题的地方。
每当播放任何SwiftUI animation 并且屏幕旋转时,方向更改 animation 就会损坏。
我的视图并没有优雅地过渡到新的方向,而是捕捉到它们的最终位置,在渲染区域之外留下大量空白空间,而 iOS 屏幕旋转 animation 的 rest 播放出来。
这在我的应用程序中非常明显,因为我有一个非白色的背景颜色,以及一个通常正在播放的 animation。
我已经用我的常规代码、简化的测试视图以及从一些教程下载的一些示例代码进行了尝试,并且这种行为似乎总是存在的。 如果没有播放动画,则屏幕旋转正常。 如果有动画,则旋转被破坏,并且视图元素猛拉到最终的 position。
有没有其他人经历过这个? 我从字面上找不到任何地方提到这个问题,我什至不知道从哪里开始。
这是我制作的“简化测试视图”的示例。 请原谅烦人的 VStack/Hstack/Spacer 组合,这只是用边到边背景颜色填充屏幕的快速方法。
struct squareView: View {
@State var rotationDegrees = 0.0
var body: some View {
VStack {
Spacer()
HStack {
Spacer()
Button(action: {
withAnimation(.linear(duration: 3)){
rotationDegrees += 180
}
}){
Rectangle()
.fill(Color.white)
.cornerRadius(30)
.rotationEffect(.degrees(rotationDegrees))
.frame(width: 250, height: 250)
}
Spacer()
}
Spacer()
}
.background(Color.black).edgesIgnoringSafeArea(.all)
}
}
如果有人对此有任何信息可以分享,我将不胜感激。 一个解决方案,一个变通方法,甚至只是一个大致的方向。
任何事情都会有所帮助。 谢谢。
编辑:因为这可能很难用语言来解释,所以我录制了这个问题的视频。
如您所见,当盒子静止时,屏幕会旋转得很好,但如果它完全旋转,iOS 的 animation 改变方向会严重损坏。
(另外,事后看来,在试图解释屏幕旋转问题时,旋转盒子并不是 animation 的最佳选择。盒子的 animation 无关紧要,我遇到的“旋转”问题是设备屏幕改变方向。)
虽然视频显示得最好,但这里有一些截图试图传达这个问题。
没有 Animation:
使用 Animation:
只是想更新它,因为最近有人似乎发现了它并且正在询问(在其他地方)。
Apple 在 iOS 15 中修复了此问题。
我向他们报告了这个问题,他们承认这是 SwiftUI 本身的一个错误。
直到 iOS 15 发布之前,我才听到任何消息。
iOS 15 修复了这个错误。 我什至不必重建我的测试应用程序。 它只是在更新时起作用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.