
- 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 中建立自定義過渡動畫,我們必須遵循以下基本步驟:
步驟 1: 我們首先必須建立一個 ViewModifier,它用於表示過渡動畫的任何狀態。或者我們可以說它用於建立一個可以應用於任何檢視的修飾符。
步驟 2: 然後我們必須建立 AnyTransition 擴充套件,它使用 .modifier(active:identity:) 來獲取活動修飾符和標識修飾符之間存在的過渡動畫。
步驟 3: 現在,我們可以使用 transition() 修飾符將我們的過渡動畫應用於檢視。
示例 1
在下面的 SwiftUI 程式中,我們建立了一個自定義過渡動畫,用於控制檢視在螢幕上顯示和隱藏時的外觀。
import SwiftUI // Modifer that adjust the opacity struct CustomModifier: ViewModifier{ var Opacity: CGFloat func body(content: Content) -> some View { content.opacity(Opacity) } } // Defining custom transition // Here we control the opacity of the view extension AnyTransition{ static var myTransition: AnyTransition{ .modifier( active: CustomModifier(Opacity: 10.5), identity: CustomModifier(Opacity: 14.5) ) } } struct ContentView: View { @State private var myState = false var body: some View { HStack{ if myState{ RoundedRectangle(cornerRadius: 10).fill(.red) .frame(width: 150, height: 100) // Here we apply customize transition to the shape .transition(.myTransition) } }.padding(30) Button("Click Me"){ withAnimation(.default){ myState.toggle() } }.font(.title).foregroundStyle(.brown) } } #Preview { ContentView() }
輸出

示例 2
在下面的 SwiftUI 程式中,我們建立了一個自定義過渡動畫,其中矩形的形狀在過渡過程中變為膠囊形。
import SwiftUI // Modifer that adjusts the shape struct CustomModifier<T: Shape<: ViewModifier{ let shape : T func body(content: Content) -> some View { content.clipShape(shape) } } // Defining custom transition extension AnyTransition{ static var myTransition: AnyTransition{ .modifier( active: CustomModifier(shape: Capsule(style: .circular)), identity: CustomModifier(shape: Capsule(style: .circular)) ) } } struct ContentView: View { @State private var myState = false var body: some View { ZStack{ Rectangle().fill(.green).frame(width: 100, height: 90) if myState{ Capsule().fill(.blue).frame(width: 150, height: 100) // Here we apply customize transition to the shape .transition(.myTransition) } }.padding(30) Button("Click Me"){ withAnimation(.default){ myState.toggle() } }.font(.title).foregroundStyle(.brown) } } #Preview { ContentView() }
輸出

廣告