ios - 如何在 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”将更改并且将调用 updaateUIView。但它没有奏效。我应该添加协调员吗?如果是这样,我该怎么办?
解决方案
推荐阅读
- java - Android Studio 布局没有响应
- c++ - 使用 IMFSinkWriter 编码的视频的播放速度根据宽度变化
- java - 切换到新的 Google Maps SDK 时出现迁移错误
- javascript - 考虑到 Windows 10 全局缩放的鼠标位置
- python - 连接两行或多行,而不会在最后一行出现重复
- python - TypeError: 'int' 对象在使用 BeatifulSoup 进行 Webscraping 时不可迭代
- javascript - Node.JS:简单的 GET 请求模块抛出“检测到可能的 EventEmitter 内存泄漏”
- node.js - node.js 背压和排水事件。我遇到了内存泄漏警告
- arraylist - 数字系统之间的变化
- android - Android - FileNotFoundException 打开失败:EACCES(权限被拒绝)