我想顯示一個串列,其中每一行都有一個不透明的影片,并有一個遞增的延遲。所以第一行應該在0.1秒后出現,第二行在0.3秒后出現,第三行在0.5秒后出現等等。
我嘗試了以下方法,但它并不奏效,因為所有的行都是一次性出現的,而且沒有影片。
如果有任何提示,我們將不勝感激!
struct GuideListView。View {
var showListItems = false
var animationDelay = 0.1
///viewRouter、資料等的定義。
var body。some View {
VStack {
//其他專案,navLink等。
List {
ForEach(data) { item in.
Button(action: {
// Navigation action(action: {
}, label: {
RowView( item: item)
})
.opacity(showListItems ? 1 : 0)
.animation(Animation.easeOut(duration: 0.6).delay(animationDelay), value: showListItems)
.onAppear{
animationDelay = animationDelay 0.2
}
} //: ForEach
} //: 串列//: VStack
.onAppear{
showListItems = true
}
}
uj5u.com熱心網友回復:
關鍵似乎是使用ForEach回圈的索引來設定影片出現的時間。此外,請用最小的、可重復的例子來提問,這樣我們就不必重新創建東西來幫助你。
下面是代碼。撥動開關只是重置狀態以顯示影片:
下面是代碼。
struct GuideListView。View {
let data = ["One"/span>, "二"/span>, "三"/span>, "四"/span>]
@State var showListItems = false
@State var animationDelay = 0.5
//span>viewRouter和資料等的定義。
var body。some View {
VStack {
//其他專案,navLink等。
Toggle("Show List Items", isOn: $showListItems)
List {
ForEach(data.indices) { index in.
Button(action: {
//導航動作。
}, label: {
Text(data[index])
})
.opacity(showListItems ? 1 : 0)
.animation(Animation.easeOut(duration: 0.6).delay(animationDelay * Double(index)) , value: showListItems)
} //: ForEach
} //: 串列//: VStack
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/333031.html
標籤:
