#87 CALayer 實作:透過 Core Animation 創造動感 BoogieBot

這次聽課複習時,發現了 BoogieBot 的介紹,決定趁機練習一下。

--

專心貫注整堂課是相當具有挑戰性的,有時會漏掉精彩的內容,在這次重聽課程的過程中,留意了課堂上介紹的 Develop in Swift Explorations 裡 2–2 Play With Programs 的 BoogieBot,對這個主題進行了研究。這次實驗了 CALayer 和 Core Animation 的相關 API,並通過實際動手操作來加深對這些工具的理解。

APP螢幕GIF:

原範例中只有一個機器人在跳舞,但我們將其擴展為四個機器人同時進行精彩的舞蹈表演!之後有時間的話,再擴展動作的招式。

APP螢幕截圖:

這次練習到的 API:

  • CATextLayer: 這是一個專門用於顯示文字的 CALayer 子類,允許我們直接在視圖上顯示和處理文字,並且支持各種屬性設定,例如字型、顏色、對齊方式等。
  • CATransform3DIdentity: 這個常數代表了不進行任何變換的 3D 變換矩陣,通常用於重置圖層的變換狀態,讓圖層恢復到預設的狀態。
  • CATransform3DMakeTranslation: 這個方法用於創建一個 3D 平移變換矩陣,允許我們在 X、Y 和 Z 軸上移動圖層。這是進行動畫平移時常用的工具。
  • CATransform3DMakeRotation: 這個方法用於創建一個 3D 旋轉變換矩陣,根據指定的角度和旋轉軸進行旋轉。這使得我們可以將圖層旋轉到所需的角度。這裡我們用於創建平移變換,使機器人的腿向上抬起或身體左右搖擺。
  • CABasicAnimation: 這是 Core Animation 的一個基本動畫類,允許我們在 CALayer 上創建簡單的動畫。通過設置動畫的 keyPathfromValuetoValue 和其他屬性,我們可以實現各種動畫效果,如顏色變化、形狀變化等。

程式修改來源

這次的程式主要修改自以下範例:
感謝大神提供的範例。

我們創建了一個名為 BoogieBot 的機器人,並讓它們按照預定的動作進行跳舞。以下是編舞動作的實現:

    func botDoMoves(boogieBot:BoogieBot){
boogieBot.doMoves([.fabulize,
.leftArmUp, .rightArmUp,
.shakeItLeft, .shakeItRight, .shakeItCenter,
.leftLegUp, .leftLegDown,
.rightLegUp, .rightLegDown,
.rightArmDown, .leftArmDown,
.leftArmUp, .rightLegUp,
.leftArmDown, .rightLegDown,
.rightArmUp,.leftLegUp,
.leftArmDown, .leftLegDown,
])
}

這些 API 的結合使得我們能夠創建出各種動態效果和互動體驗,從而使應用界面更加生動有趣。這次的實踐也幫助我更加熟悉如何在實際應用中有效利用這些工具,來實現自定義的動畫和界面效果。

參考:

待研究的文獻

contentsScale

CATiledLayer

CGAffineTransform

--

--