- 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()` 還是 `.animation()`。這兩個修飾符都可以與單個或多個動畫一起使用。使用這些多個動畫,我們還可以為所有型別的檢視建立各種效果。
SwiftUI 中的多個隱式動畫
我們可以透過對每個屬性使用 `.animation()` 修飾符來隱式地為多個屬性設定動畫。當屬性更改狀態時,它會對指定的屬性進行動畫處理。
示例
在下面的程式中,我們將兩種隱式型別的動畫應用於橢圓。因此,當我們單擊按鈕時,橢圓會同時開始增大尺寸並旋轉。
import SwiftUI
struct ContentView: View {
@State private var scale = false
@State private var rotate = false
var body: some View {
VStack{
Ellipse()
.fill(.orange)
.frame(width: 100, height: 110)
.rotationEffect(.degrees(rotate ? 260 : 0))
.scaleEffect(scale ? 3 : 1)
.animation(.easeInOut(duration: 1), value: scale)
.animation(.easeIn(duration: 1), value: rotate)
Button("Click Me"){
scale.toggle()
rotate.toggle()
}.font(.title2)
}
}
}
#Preview {
ContentView()
}
輸出
SwiftUI 中的多個顯式動畫
我們可以透過使用 `.withAnimation()` 修飾符來顯式地為多個屬性設定動畫,其中此修飾符的閉包包含指定屬性的所有狀態更改。示例
在下面的程式中,我們使用兩種不同的動畫(旋轉和移動)對文字“TutorialsPoint”進行動畫處理。在這裡,當我們單擊按鈕時,文字向右移動,1 秒後開始旋轉。
import SwiftUI
struct ContentView: View {
@State private var move = false
@State private var rotate = false
var body: some View {
VStack{
Text("TutorialsPoint")
.font(.headline)
.foregroundStyle(.red)
.bold()
.rotationEffect(.degrees(rotate ? 260 : 0))
.offset(x: move ? 150 : 0)
Button("Click Me"){
withAnimation(.easeIn(duration: 1)){
move.toggle()
}
withAnimation(.easeOut(duration:1).delay(0.5)){
rotate.toggle()
}
}.font(.title2)
}
}
}
#Preview {
ContentView()
}
輸出
SwiftUI 中多個檢視的動畫
在 SwiftUI 中,我們可以使用 `.animation()` 和 `.withAnimation()` 修飾符同時對多個檢視進行動畫處理。我們可以對檢視使用相同的 state 變數或不同的變數。現在讓我們討論如何透過以下示例來為多個檢視設定動畫。
示例
下面的 SwiftUI 程式對兩個檢視進行動畫處理:矩形檢視和文字檢視。這裡,兩個檢視都使用相同的 state 變數,這些狀態由 `.withAnimation()` 修飾符控制。縮放效果應用於矩形檢視,旋轉效果應用於文字檢視。
import SwiftUI
struct ContentView: View {
@State private var myState = false
var body: some View {
ZStack{
// Animating rectangle view
Rectangle().fill(.yellow).frame(width: 150, height: 50)
// Here we apply scaling effect on the rectangle
.scaleEffect(myState ? 0.8 : 2)
// Animating Text View
Text("TutorialsPoint").font(.largeTitle).foregroundStyle(.green)
// Here we apply rotation effect on the text
.rotationEffect(.degrees(myState ? 360 : 0))
}.padding(30)
Button("Click Me"){
withAnimation(.easeInOut(duration: 1.4)){
myState.toggle()
}
}.font(.title)
}
}
#Preview {
ContentView()
}
輸出
廣告