【问题标题】:SwiftUI hiding navigation bar affects other animationsSwiftUI 隐藏导航栏影响其他动画
【发布时间】:2021-02-20 10:18:45
【问题描述】:

我有以下 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)
  }

【问题讨论】:

    标签: uinavigationbar navigationbar swiftui


    【解决方案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 !!
    

    【讨论】:

    • 嗯刚刚试过这个,仍然遇到同样的问题,圆圈会移动位置:/
    • 我在 Xcode 12.1 / iOS 14.1 上测试了它。有没有其他可能影响的代码?
    • 是的,你是对的,当我在 SwiftUI 游乐场应用程序中测试它时,它似乎工作正常,但似乎只是我的主应用程序的问题,可能还有其他因素导致这种情况发生.我将进一步调试并在此处添加新发现的详细信息。非常感谢您的帮助!
    猜你喜欢
    • 2020-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    • 2015-06-14
    • 1970-01-01
    相关资源
    最近更新 更多