第 55 章
使用 KeyframeAnimator 建立進階動畫
除了 PhaseAnimator
,SwiftUI 在 iOS 17 中還引入了 KeyframeAnimator
,允許開發者使用關鍵幀(keyframe)建立更進階動畫。在本教程中,我們將深入研究 KeyframeAnimator
,並學習如何創建更複雜的動畫。
我們在前一個教學中討論的 PhaseAnimator
視圖(或修飾器)為開發者提供了在一系列相位中創建多步驟動畫的能力。通過為每個相位指定所需的動畫,PhaseAnimator
在相位變化時自動對內容進行動畫處理。它通過為你處理相位之間的過渡,簡化了構建複雜動畫的過程。
使用 KeyframeAnimator
對於階段性的動畫(Phase-based Animation),它適用於可以表示為離散狀態的動畫。當狀態轉換發生時,所有屬性都同時進行動畫。一旦特定狀態的動畫完成,SwiftUI 將平滑地過渡到下一個狀態。這個過程會應用到所有動畫階段中。
基於關鍵幀的動畫(Keyframe-based animation)旨在應對一種特定類型的動畫,其中每個屬性都可以獨立進行動畫化。通過利用關鍵幀,我們可以分別對個別的屬性建立動畫,從而為我們的動畫提供更大的靈活性和控制能力。

讓我們嘗試對一個表情符號圖標進行動畫(如上所示),你將理解我們如何使用關鍵幀動畫器(keyframe animator)。
定義動畫值
如前所述,基於關鍵幀的動畫使我們能夠獨立地對個別的屬性進行動畫。為了利用關鍵幀動畫器,我們首先定義一個結構,該結構包含我們希望進行動畫的所有屬性。以下是一個示例:
想更深入學習SwiftUI和下載完整程式碼?你可以從 AppCoda網站購買《精通 SwiftUI》完整電子版。