- 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 - 非對稱過渡
非對稱過渡是一種特殊的過渡型別,使用它我們可以為檢視的出現和消失指定不同的過渡方式。例如,檢視的出現使用滑動過渡,而檢視的消失使用不透明度過渡。此方法用於 `.transition()` 修飾符內。
語法
以下是語法:
static func asymmetric(insertion: AnyTransition, removal: AnyTransition) -> AnyTransition
引數
此方法採用以下引數:
insertion: 表示檢視的插入過渡。
removal: 表示檢視的移除過渡。
示例 1
在下面的 SwiftUI 程式中,我們將非對稱過渡應用於圓角矩形。此處圓角矩形使用滑動過渡進入,並使用不透明度過渡退出螢幕。
import SwiftUI
struct ContentView: View {
@State private var anime = false
var body: some View {
ZStack{
if anime{
RoundedRectangle(cornerRadius: 10)
.fill(.red)
.frame(width: 150, height: 100)
// Here we apply asymmetric transition on the shape
.transition(.asymmetric(insertion: .slide, removal: .opacity))
}
}.padding(30)
Button("Click Me"){
withAnimation(.default){
anime.toggle()
}
}.font(.title).foregroundStyle(.brown)
}
}
#Preview {
ContentView()
}
輸出
示例 2
在下面的 SwiftUI 程式中,我們為兩種(真和假)狀態更改應用不同的非對稱過渡。
import SwiftUI
struct ContentView: View {
@State private var anime = false
var body: some View {
ZStack{
if anime{
RoundedRectangle(cornerRadius: 10)
.fill(.red)
.frame(width: 150, height: 100)
// Here we apply asymmetric transition on the shape
.transition(.asymmetric(insertion: .slide, removal: .push(from: .top)))
}else{
RoundedRectangle(cornerRadius: 10)
.fill(.yellow)
.frame(width: 150, height: 100)
// Here we apply asymmetric transition on the shape
.transition(.asymmetric(insertion: .push(from: .top), removal: .slide))
}
}.padding(30)
Button("Click Me"){
withAnimation(.default){
anime.toggle()
}
}.font(.title).foregroundStyle(.brown)
}
}
#Preview {
ContentView()
}
輸出
廣告