- SwiftUI 教程
- SwiftUI - 首頁
- SwiftUI - 概述
- SwiftUI vs UIkit
- SwiftUI 環境
- SwiftUI - 環境設定
- SwiftUI - 基本元件
- SwiftUI - 構建第一個應用程式
- SwiftUI 檢視
- SwiftUI - 檢視
- SwiftUI - 自定義文字檢視
- SwiftUI - 自定義影像檢視
- SwiftUI - 堆疊
- SwiftUI 繪製形狀
- SwiftUI - 形狀
- SwiftUI - 繪製線條
- SwiftUI - 繪製矩形
- SwiftUI - 繪製圓角矩形
- SwiftUI - 繪製三角形
- SwiftUI - 繪製圓形
- SwiftUI - 繪製星形
- SwiftUI - 繪製多邊形
- SwiftUI - 繪製餅圖
- SwiftUI - 使用內建形狀
- SwiftUI - 文字
- SwiftUI - 文字檢視
- SwiftUI - 文字輸入和輸出
- SwiftUI - 顏色
- SwiftUI - 顏色
- SwiftUI - 顏色選擇器
- SwiftUI - 漸變
- SwiftUI - 調整顏色
- SwiftUI - 效果
- SwiftUI - 效果
- SwiftUI - 混合效果
- SwiftUI - 模糊效果
- SwiftUI - 陰影效果
- SwiftUI - 懸停效果
- SwiftUI - 動畫
- SwiftUI - 動畫
- SwiftUI - 建立動畫
- SwiftUI - 建立顯式動畫
- SwiftUI - 多個動畫
- SwiftUI - 過渡
- SwiftUI - 非對稱過渡
- SwiftUI - 自定義過渡
- SwiftUI - 圖片
- SwiftUI - 影像
- SwiftUI - 圖片作為背景
- SwiftUI - 旋轉影像
- SwiftUI - 媒體
- SwiftUI - 檢視佈局
- SwiftUI - 檢視佈局
- SwiftUI - 檢視大小
- SwiftUI - 檢視間距
- SwiftUI - 檢視填充
- SwiftUI - 列表和表格
- SwiftUI - 列表
- SwiftUI - 靜態列表
- SwiftUI - 動態列表
- SwiftUI - 自定義列表
- SwiftUI - 表格
- SwiftUI - 表單
- SwiftUI - 表單
- SwiftUI - 將表單分成多個部分
- SwiftUI 有用資源
- SwiftUI - 有用資源
- SwiftUI - 討論
SwiftUI - 動畫
動畫是在檢視狀態發生變化時對螢幕上檢視進行動畫處理的過程。它可以透過視覺方式反映檢視的變化,從而建立有吸引力的使用者介面。因此,在本章中,我們將學習 SwiftUI 中動畫的基礎知識。
SwiftUI 中的動畫
SwiftUI 對動畫提供了良好的支援。藉助動畫,我們可以在檢視或元件或佈局的狀態發生變化時,輕鬆地在檢視中建立流暢的視覺過渡。由於 SwiftUI 的宣告式方法,我們可以根據檢視狀態的變化來動畫化大小、顏色、不透明度、位置等屬性。
在 SwiftUI 中,我們可以使用以下方法建立動畫 -
withAnimation(_:_:_) 方法: 用於建立基於狀態的動畫。它允許您指定動畫型別並在狀態變數更改其狀態時執行動畫。
animation(:value:) 方法: 用於將動畫插入到特定檢視中,這意味著當檢視的狀態被修改時,它會自動為指定的檢視設定動畫。
SwiftUI 中的動畫型別
SwiftUI 支援以下型別的動畫
隱式動畫:此動畫為檢視提供預定義的動畫。因此,每當狀態發生變化時,檢視都會進行動畫處理,它會自動工作,這意味著我們不需要為每個動畫幀指定。這種型別的動畫是透過使用 .animation() 方法實現的。
顯式動畫:它用於建立僅更改給定檢視中存在的指定屬性的動畫。我們可以藉助 withAnimation() 方法實現顯式動畫。它為我們提供了對動畫的更多控制。
動畫曲線:它提供各種型別的動畫曲線,例如 .easeIn、.easeOut、.easeInOut 和 .linear。它們通常用於控制動畫檢視的速度。
彈簧動畫:這是一種特殊的動畫型別,用於建立彈簧運動。
重複動畫:這是一種用於建立重複特定次數的動畫的動畫型別。
狀態驅動的動畫:眾所周知,在 SwiftUI 中,動畫由 @State 或其他動態屬性的變化觸發,因此每當狀態變數的值發生變化時,檢視的相應屬性將更新並且過渡將被動畫化。
使用動畫的好處
以下是使用動畫將獲得的一些關鍵好處 -
動畫透過建立更清晰、更具互動性的應用程式介面來增強應用程式的可用性。
動畫向用戶提供對他們操作的即時且清晰的響應,並減少任何混淆。
應用程式中精心設計的動畫可以增強使用者參與度。
動畫可以幫助開發人員將更多注意力放在應用程式的重要部分上。
動畫在狀態之間移動時提供更流暢的過渡效果。
SwiftUI 中的巢狀動畫
SwiftUI 透過 withAnimation() 方法支援巢狀動畫。使用它,我們可以將多個動畫應用於一個檢視。我們還可以透過巢狀兩個或多個動畫來建立特殊效果。
語法
以下是語法 -
func animation<V>(_animation:Animation?,
value: V) -> some View where V : Equatable
示例
以下 SwiftUI 程式用於建立巢狀動畫。此處,外部 withAnimation() 負責圓形的縮放,內部 withAnimation() 負責顏色的變化。
import SwiftUI
struct ContentView: View {
@State private var scale = false
@State private var color = false
var body: some View {
VStack{
Circle()
.stroke(color ? Color.blue: Color.red, lineWidth: 6)
.frame(width: 160)
.scaleEffect(scale ? 1.7 : 1.1)
.padding(10)
Button("Click"){
withAnimation(.easeInOut(duration: 8.0)){
scale.toggle()
withAnimation(.easeInOut(duration: 1.1)){
color.toggle()
}
}
}.font(.title2)
}
}
}
#Preview {
ContentView()
}
輸出
SwiftUI 中的定時曲線
定時曲線用於使用不同的定時階段(例如開始、中間和結束)來自定義動畫的速度。它允許我們控制動畫如何在螢幕上移動。為了控制動畫的速度,SwiftUI 提供了一個名為 timingCurve() 的內建修飾符。timingCurve() 修飾符根據給定的點對建立的動畫進行動畫處理。
語法
以下是語法 -
static func timingCurve( _ p1x: Double, _ p1y: Double, _ p2x: Double, _ p2y: Double, duration: TimeInterval = 0.35 ) -> Animation
引數
以下是引數 -
p1x:表示曲線的控制點的第一個 x 座標。
p1y:表示曲線的控制點的第一個 y 座標。
p1x:表示曲線的控制點的第二個 x 座標。
p1y:表示曲線的控制點的第二個 y 座標。
duration:表示動畫的持續時間(以秒為單位)。
示例
在以下 SwiftUI 程式中,我們將根據自定義定時曲線對圓形進行動畫處理。
import SwiftUI
struct ContentView: View {
@State private var move = false
var body: some View {
VStack{
Circle()
.stroke(.red, lineWidth: 6)
.frame(width: 160)
.offset(x : move ? 160 : -130)
.animation(.timingCurve(0.67, -0.54, 0.28, 1.34, duration: 2), value: move)
Button("Click"){
move.toggle()
}.font(.title2)
}
}
}
#Preview {
ContentView()
}
輸出