我目前在一個函式上使用 SwiftUI,其中影像串列會隨著每個影像的不透明影片自動更改。
雖然我目前已經設法進行過渡,但無論我嘗試什么,不透明影片都不起作用。
有人可以幫我解決這個問題嗎...
我正在處理的代碼如下:
//
// EpilogueThree.swift
//
import SwiftUI
struct EpilogueThree: View {
let images = ["1", "2", "3"]
let imageChangeTimer = Timer.publish(every: 3, on: .main, in: .common).autoconnect()
let transition = AnyTransition.asymmetric(insertion: .slide, removal: .scale).combined(with: .opacity)
@State private var imagePage = 2
@State private var currentImageIndex = 0
var body: some View {
ZStack {
VStack {
Text("Page: \(imagePage)")
.font(.largeTitle)
.foregroundColor(.white)
.padding(.horizontal, 20)
.padding(.vertical, 5)
.background(.black.opacity(0.75))
Image(images[currentImageIndex])
.resizable()
.ignoresSafeArea()
.transition(transition)
.onReceive(imageChangeTimer) { _ in
if imagePage > 0 {
self.currentImageIndex = (self.currentImageIndex 1) % self.images.count
imagePage -= 1
}
}
}
}
}
}
struct EpilogueThree_Previews: PreviewProvider {
static var previews: some View {
EpilogueThree()
.previewInterfaceOrientation(.landscapeRight)
}
}
當前代碼的行為如下:

但我想要的代碼需要做這樣的事情:

uj5u.com熱心網友回復:
id在這種情況下,我們可以通過添加(新id- 新視圖)并將影片添加到容器中來使影像可移動......用于影片。
這里是固定部分。使用 Xcode 13.4 / iOS 15.5 測驗
VStack {
// .. other code
Image(images[currentImageIndex])
.resizable()
.ignoresSafeArea()
.id(imagePage) // << here !!
.transition(transition)
.onReceive(imageChangeTimer) { _ in
if imagePage > 0 {
self.currentImageIndex = (self.currentImageIndex 1) % self.images.count
imagePage -= 1
}
}
}
.animation(.default, value: imagePage) // << here !!
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/490374.html
