- 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 中,我們可以使用 .withAnimation() 修飾符建立顯式動畫。
“.withAnimation()” 修飾符
“.withAnimation()” 修飾符用於在狀態更改時為給定檢視中存在的所有元件設定動畫。或者我們可以說,它會根據在 withAnimation() 程式碼塊中定義的狀態更改程式碼自動為給定檢視的過渡設定動畫。它允許我們根據需要手動控制動畫。
語法
以下是語法 -
func withAnimation<Result>( _animation: Animation? = .default, _body: () throws -> Result )rethrows -> Result
示例 1
以下 SwiftUI 程式用於建立顯式動畫。在這裡,我們透過單擊按鈕來更改矩形的透明度。
import SwiftUI
struct ContentView: View {
@State private var myOpacity = false
var body: some View {
Rectangle()
.frame(width: 150, height: 100)
.opacity(myOpacity ? 0.2 : 2)
Button("Change Opacity"){
withAnimation(.easeInOut(duration: 1.3)){
myOpacity.toggle()
}
}.font(.largeTitle).foregroundStyle(.brown)
}
}
#Preview {
ContentView()
}
輸出
示例 2
以下 SwiftUI 程式用於線性執行卡車。
import SwiftUI
struct ContentView: View {
@State private var run = false
var body: some View {
Image(systemName: "box.truck")
.font(.largeTitle)
.foregroundColor(.green)
.offset(x: run ? 1400 : -140, y: 0)
Button("Run The Truck"){
withAnimation(.linear(duration: 0.9)){
run.toggle()
}
}.font(.title2).foregroundStyle(.brown)
}
}
#Preview {
ContentView()
}
輸出
隱式動畫與顯式動畫
眾所周知,在 SwiftUI 中,我們可以建立兩種不同型別的動畫:隱式動畫和顯式動畫。這兩種動畫都會為檢視設定動畫,但它們仍然存在一些差異,差異如下 -
| 隱式動畫 | 顯式動畫 |
|---|---|
| 當階段發生變化時自動觸發。 | 在 withAnimation() 程式碼塊內手動觸發。 |
| 藉助 .animation() 修飾符直接應用於檢視。 | 應用於 withAnimation 程式碼塊記憶體在的狀態更改。 |
| 對動畫的控制有限。 | 對動畫提供了完全控制。 |
| 適用於簡單的動畫。 | 最適合簡單和複雜的動畫。 |
| 靈活性較差,但易於使用。 | 靈活性更強。 |
廣告