第 33 章
使用 matchedGeometryEffect為 App 建立絢麗的視圖動畫

在 iOS 14 中,Apple 為 SwiftUI 框架引入了很多新功能,像是 LazyVGrid 以及 LazyHGrid。其中 matchedGeometryEffect 非常引人注目,這個功能讓開發者只需要幾行程式碼,就能夠創造絢麗的視圖動畫。SwiftUI 框架已經讓開發者可以簡單地使用動畫來呈現視圖的變化,而 matchedGeometryEffect 修飾器 (modifier) 更將視圖動畫 (view animations) 的實作提升到另一個境界。

對所有手機 App 來說,我們經常需要在多個視圖之間轉換,因此一個令人喜歡的視圖轉換絕對可以提昇整體的使用者體驗。有了 matchedGeometryEffect,你只需要描述兩個視圖的外觀,修飾器就會自動計算兩個視圖的差異,並且自動為大小和位置的變化加上動畫。

可能你會覺得十分困惑,但別擔心,介紹完整個範例 App 之後,你就會明白我在說什麼了。

想更深入學習SwiftUI和下載完整程式碼?你可以從AppCoda網站購買《精通 SwiftUI》完整電子版。

使用動畫轉換來交換兩個視圖

現在你應該對 matchedGeometryEffect 有了基礎的認識,讓我們繼續來看看它如何幫助我們建立一些絢麗的動畫。在這個範例中,我們會交換兩個圓形視圖的位置,並且套用修飾器來建立順暢的視圖轉換。

圖 33.6. 交換兩個視圖的位置
圖 33.6. 交換兩個視圖的位置

建立一個英雄動畫效果(Hero Animation)

除了從一種形狀轉換到另一種形狀之外,你還可以使用 matchedGeometryEffect 修改器來創建基本的英雄動畫。 給你一個例子,圖 33.8 顯示了一個圖像和一段文字的堆棧視圖。 點擊視圖時,圖像和文字都會展開以佔據全螢幕。 這種類型的動畫通常被稱為英雄動畫(Hero Animation)。

圖 33.8. 將堆棧視圖擴展到全螢幕
圖 33.8. 將堆棧視圖擴展到全螢幕

同樣地,我們可以應用 matchedGeometryEffect 技巧來創建這種類型的過場動畫。 如果參考圖 33.8,視圖轉換中有兩個視圖:

  1. 一個是顯示較小圖像和文章節錄的視圖。
  2. 另一個是擴展為全螢幕的視圖,顯示精選照片和全文。

想更深入學習SwiftUI和下載完整程式碼?你可以從 AppCoda網站購買《精通 SwiftUI》完整電子版。

results matching ""

    No results matching ""