SwiftUI隐藏导航栏会影响其他动画

时间:2020-11-08 07:12:15

标签: uinavigationbar navigationbar swiftui

我有以下SwiftUI视图,我想让它重复缩放动画以模拟脉动效果。

但是,除了缩放以外,圆还在上下移动。看来原因是因为我将navigationBarHidden设置为true,这导致圆向下移动,并且移动的动画与缩放动画一起重复。删除navigationBarHidden行将解决此问题,但我想隐藏导航栏。

如何确保此处的重复动画仅适用于scalingEffect,并确保隐藏导航栏时动画不受影响?任何帮助将不胜感激!

@State var animate = false

var body: some View {
    ZStack {
      Circle()
        .frame(width: 200, height: 200, alignment: .center)
        .scaleEffect(animate ? 0.7 : 1.0, anchor: .center)
        .animation(Animation.default.repeatForever(autoreverses: true))
    }
    .onAppear {
      self.animate.toggle()
    }
    .navigationBarHidden(true)
  }

1 个答案:

答案 0 :(得分:1)

使动画按值显示状态,例如

  Circle()
    .frame(width: 200, height: 200, alignment: .center)
    .scaleEffect(animate ? 0.7 : 1.0, anchor: .center)
    .animation(Animation.default.repeatForever(autoreverses: true), 
        value: animate)     // << here !!