如何在 SwiftUI 中运行应用程序时更改视图

问题描述

struct AnimationView: UIViewRepresentable {
    @Binding var cnt: Int
    var imageView: UIImageView = UIImageView(image: effctPicker(cnt: 0))
    func makeUIView(context: Self.Context) -> UIImageView {
        return imageView
    }
    func updateUIView(_ uiView: UIImageView,context: UIViewRepresentableContext<AnimationView>) {
        if self.cnt == 0{
            self.imageView.image = effctPicker(cnt: 0)
        }
        else {
            self.imageView.image = effctPicker(cnt: self.cnt)
        }
    }
}

struct ContentView: View {
    @State var count:Int = 0
    @State var audioPlayer: AVAudioPlayer!
    @State var bg: String = "bg"

    var body: some View {
                Button(action:{
                    count += 1
                    switch count
                    {
                    case 1:
                        self.bg = "bg_2"
                    default:
                        count = 0
                        self.bg = "bg"
                    }
                },label: {
                    ZStack {
                    Image(bg)
                        .resizable()
                        AnimationView(cnt: $count)
                    }.onAppear {
                        let sound = Bundle.main.path(forResource: "freelove",ofType: "mp3")
                        self.audioPlayer = try! AVAudioPlayer(contentsOf: URL(fileURLWithPath: sound!))
                        self.audioPlayer.play()
                    }
                }
                )
    
            }
}
var springImages = [UIImage(named: "eft1")!,UIImage(named: "eft2")!,UIImage(named: "eft3")!,UIImage(named: "eft4")!]
var rainImages = [UIImage(named: "raineft_1")!,UIImage(named: "raineft_2")!,UIImage(named: "raineft_3")!]


func effctPicker(cnt : Int) ->UIImage{
    if cnt == 0{
        return UIImage.animatedImage(with: springImages,duration: 0.4)!
    }
    else {
        return UIImage.animatedImage(with: rainImages,duration: 0.4)!
    }
    
}

首先,很抱歉我的英语水平不好。这是我在 stackoverflow 中的第一个问题

这是我的动画视图 我想当我按下按钮时,绑定的“cnt”会改变并且 updateUIView 会被调用。 但它没有奏效。我应该添加协调员吗?如果是这样,我该怎么办?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)