ios - SwiftUI 动画影响其他 View

标签 ios swift swiftui

这是我的观点:

struct HomeView: View {
    @ObservedObject var instance = Instance()
    @State var dotColor = Color.gray
    var repeatingAnimation: Animation {
            Animation
                .easeInOut(duration: 1.0)
                .repeatForever()
        }
    var body: some View {
        ZStack {
            TabView(selection: $selectedTab) {
                Settings(auth: auth)
                .tabItem {
                        Image(systemName: "gear")
                    Text("Settings")
    
                }.tag(0)
                ZStack {
                    MapView(locationManager: locationManager)
                    Color.black.opacity(self.instance.status.opacity)
                    VStack {
                        Spacer()
                        Button(action: {
                            print("clicked")
                            withAnimation(self.repeatingAnimation) {
                                                self.dotColor = Color.white
                                            }
                            self.instance.changeStatus()
                        }){
                            HStack {
                                Text(self.instance.status.text)
                                    .font(.system(size: 24))
                                    .fontWeight(.bold)
                                    .foregroundColor(Color.white)
                                Circle().frame(width: 12, height: 12)
                                    .foregroundColor(self.dotColor)
                                    .colorMultiply(self.dotColor)
                                    .overlay(
                                        Circle()
                                            .stroke(Color.black, lineWidth: 1)
                                    )
                                
                            }
                        }.padding()
我的动画,改变了 Circle() 的颜色来自 graywhite每一秒。然而,它也改变了我的 ZStack每秒颜色不透明度( Color.black.opacity(self.instance.status.opacity) ) - 即使它与我的动画无关。
如果我删除动画,ZStack 不透明度不会发生这种奇怪的行为。
我怎样才能解决这个问题?

最佳答案

您可以显式禁用某些修饰符的动画,例如

Color.black.opacity(self.instance.status.opacity)
  .animation(nil)

关于ios - SwiftUI 动画影响其他 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62729812/

相关文章:

swift - 对象之间有什么区别(forKey :) and value(forKey:) in UserDefaults?

ios - 自定义弹出窗口显示时的 SwiftUI 导航栏外观和功能

ios - UITableViewCell 内容 View 不填充单元格

iphone - Sencha Touch 2 如何在 Windows 上构建 iOS 应用程序?

swift - 类扩展了 SKScene 但无法访问其属性

ios - 创建一个实现特定协议(protocol)的对象数组

swift - 导航到其他页面后,如何在 SwiftUI 中恢复已发布的计时器?

SwiftUI:在 map View 上更改 map 类型?

ios - 如何在设置页面检查我的应用程序是否禁用了 Face ID

iOS 多点触控不起作用