SwiftUI:通过更新变量来动画波浪不起作用

Posted

技术标签:

【中文标题】SwiftUI:通过更新变量来动画波浪不起作用【英文标题】:SwiftUI: Animating wave by updating variable not working 【发布时间】:2020-10-28 15:44:17 【问题描述】:

我对 SwiftUI 比较陌生,我想通过使用 Button 更改变量 caffeineContent 来更新波函数(表示咖啡的饱满程度)。

如果我打印它,值会发生变化,但 Content-View 保持不变并且没有更新。 我想过强制更新 UI,但这个解决方案对我来说似乎不合适。

信息:

caffeineContent = 50 --> 咖啡已满

caffeineContent = 0 --> 咖啡是空的

var caffeineContent: Int = 10


struct ContentView: View 
    
    
    @State private var showModal = false
    @State private var percent = caffeineContent
    
    
    var body: some View 
        ZStack 
            
            Color(red: 0.5, green: 0.4, blue: 0.35).ignoresSafeArea()
    
     […]
                                        
                    CircleWaveView(percent: Int(caffeineContent)).padding(EdgeInsets(top: 90, leading: 65, bottom: 100, trailing: 79))
                        
              
                
                
     […]
                Button(action: 
                    
                    caffeineContent = caffeineContent+5
                    print(caffeineContent)
                   
                , label: 
                    Text("Add caffeine content").font(.largeTitle)

[…]

【问题讨论】:

这可能对***.com/a/63412977/12299030 和***.com/a/64347221/12299030 有帮助。 【参考方案1】:

谢谢@Asperi!这是一个解决方案,我现在知道了。

struct ContentView: View 
    

@State private var showModal = false
**@State private var percent: Int = 50**
    
[...]
           
                    
CircleWaveView(percent: **Int(self.percent)**)
.padding(EdgeInsets(top: 90, leading: 65, bottom: 100, trailing: 79))
                  
[...]     
                Button(action: 
                    **self.percent -= 5**
                    
                   
                , label: 
                    Text("Add caffeine content").font(.largeTitle)
                )
[...]

【讨论】:

以上是关于SwiftUI:通过更新变量来动画波浪不起作用的主要内容,如果未能解决你的问题,请参考以下文章

通过更改 SwiftUI 中的 @State 变量来刷新视图不起作用

嵌入另一个视图时,SwiftUI 动画不起作用

SwiftUI - 过渡动画在 GeoReader 中不起作用?

iOS 15 SwiftUI 3 Picker 绑定在更改@State 值后不起作用

Google Admob 横幅广告在 swiftui 中不起作用

动画/关键帧在 Firefox 中不起作用(通过 JavaScript 启动 CSS 动画)