簡體   English   中英

SwiftUI 動畫中斷屏幕旋轉

[英]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)
    }
}

如果有人對此有任何信息可以分享,我將不勝感激。 一個解決方案,一個變通方法,甚至只是一個大致的方向。

任何事情都會有所幫助。 謝謝。


編輯:因為這可能很難用語言來解釋,所以我錄制了這個問題的視頻。

https://youtu.be/UejK_MTY4Mw

如您所見,當盒子靜止時,屏幕會旋轉得很好,但如果它完全旋轉,iOS 的 animation 改變方向會嚴重損壞。

(另外,事后看來,在試圖解釋屏幕旋轉問題時,旋轉盒子並不是 animation 的最佳選擇。盒子的 animation 無關緊要,我遇到的“旋轉”問題是設備屏幕改變方向。)

雖然視頻顯示得最好,但這里有一些截圖試圖傳達這個問題。

沒有 Animation:

在此處輸入圖像描述

使用 Animation:

在此處輸入圖像描述

我們必須將其更改為黑色。

在此處輸入圖像描述

只是想更新它,因為最近有人似乎發現了它並且正在詢問(在其他地方)。

Apple 在 iOS 15 中修復了此問題

我向他們報告了這個問題,他們承認這是 SwiftUI 本身的一個錯誤。

直到 iOS 15 發布之前,我才聽到任何消息。

iOS 15 修復了這個錯誤。 我什至不必重建我的測試應用程序。 它只是更新時起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM