我试图使用三元迭代器来简化动态照片处理代码,但这种方法似乎在SwiftUI中没有成功。你能解释一下原因吗?
以下代码按预期执行动画和过渡。
import SwiftUI
struct SwiftUIView: View {
@State private var onOff = true
var image: String
var nextPhoto: String
var body: some View {
VStack {
Button(action: {
withAnimation(.spring(dampingFraction: 2.825) ) {
self.onOff.toggle()
}
}) {
Text("Button")
}
if onOff {
Image(image)
.transition(.scale)
.animation (.default)
} else {
Image(nextPhoto)
.transition(.scale)
.animation (.default)
}
}
}
}
struct SwiftUIView_Previews: PreviewProvider {
static var previews: some View {
SwiftUIView(image: "photo", nextPhoto: "photo_next")
}
}
此代码的结果
但是,当我使用三元运算符时,动画将停止工作。如何用三进制简化此代码?有什么想法吗?
struct SwiftUIView: View {
@State private var onOff = true
var image: String
var nextPhoto: String
var body: some View {
VStack {
Button(action: {
withAnimation(.spring(dampingFraction: 2.825) ) {
self.onOff.toggle()
}
}) {
Text("Button")
}
Image(onOff ? image : nextPhoto)
.transition(.scale)
.animation (.default)
}
}
}
此代码的结果
我还尝试了以下选项,但也失败了。
var image = onOff ? self.image : nextPhoto
Image(image)
.transition(.scale)
.animation (.default)
我不能发布动画视频,因为我的声誉很低,所以我会发布这样的问题gif:第一个代码的结果第二个代码的结果
试试这个,尽管我不确定,
var image = onOff ? self.image : nextPhoto
Image(image)
.transition(.scale)
.animation (.default)