图像主体中的swiftui三元运算符不播放动画和转换



我试图使用三元迭代器来简化动态照片处理代码,但这种方法似乎在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)

最新更新