image - 是否可以使用相同的图像通过淡入淡出动画更改图像? (SwiftUI)

标签 image animation swiftui fading

根据我的逻辑,点击图像的手势应该用淡入淡出动画来改变,但实际结果是图像在没有动画的情况下改变。使用 Xcode 11.3.1、Simulator 13.2.2/13.3 测试是否重要。

附言图像命名为“img1”、“img2”、“img3”等。

enum ImageEnum: String {
    case img1
    case img2
    case img3

    func next() -> ImageEnum {
        switch self {
            case .img1: return .img2
            case .img2: return .img3
            case .img3: return .img1
        }
    }
}
struct ContentView: View {
    @State private var img = ImageEnum.img1
    var body: some View {
        Image(img.rawValue)
            .onTapGesture {
                withAnimation {
                    self.img = self.img.next()
                }
            }
    }
}

最佳答案

这是使用一个图像的可能方法(用于演示一些使用默认图像的小修改)。用注释标记的重要更改。

demo

enum ImageEnum: String {
    case img1 = "1.circle"
    case img2 = "2.circle"
    case img3 = "3.circle"

    func next() -> ImageEnum {
        switch self {
            case .img1: return .img2
            case .img2: return .img3
            case .img3: return .img1
        }
    }
}
struct QuickTest: View {
    @State private var img = ImageEnum.img1
    @State private var fadeOut = false
    var body: some View {
        Image(systemName: img.rawValue).resizable().frame(width: 300, height: 300)
            .opacity(fadeOut ? 0 : 1)
            .animation(.easeInOut(duration: 0.25))    // animatable fade in/out
            .onTapGesture {
                self.fadeOut.toggle()                 // 1) fade out

                // delayed appear
                DispatchQueue.main.asyncAfter(deadline: .now() + 0.25) {
                    withAnimation {
                        self.img = self.img.next()    // 2) change image
                        self.fadeOut.toggle()         // 3) fade in
                    }
                }
            }
    }
}

关于image - 是否可以使用相同的图像通过淡入淡出动画更改图像? (SwiftUI),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60688925/

相关文章:

javascript - 提高js动画的性能

swift - 在 SwiftUI 中显示详细 View 的导航标题

swift - 如何使用 SwiftUI 呈现小页面?

java - 如何使用 itext7 Java 将多个图像添加到 PDF 中?

javascript - 将 div 的宽度推小的动画

c# - 微妙的 WP7 枢轴 ListViewItem 动画

SwiftUI View 在意想不到的路径上动画

php - 将 imagedestroy() 从光盘中删除

ios - 获取我用 UIImagePickerController 拍的照片

iOS/swift : How to manage image downloading from Firebase in a feed