【问题标题】:How to Animate Between Two Views Inside a StackView?如何在 StackView 内的两个视图之间进行动画处理?
【发布时间】:2017-06-26 20:34:24
【问题描述】:

我想在屏幕上占据相同空间的两个不同 UIView 之间制作动画。有时用户希望查看图像和其他时间统计信息。通过点击一个按钮,我想在两者之间制作动画。

现在我只有一个视图安排在 XIB 中的 stackView 内,我想知道如何在不弄乱 autoLayout 的情况下进行设置?

我是否需要获取对 stackView 的引用和另一个视图?如果是这样,这是否意味着我必须以编程方式设置布局约束?

处理这个问题的最佳方法是什么?

谢谢。

【问题讨论】:

  • 根据你的描述,我会用 UICollectionView 来研究解决方案,而不是常规的 UIViews。
  • 更容易操作。
  • 我不同意。在这种情况下,UIStackView 更可取,主要是因为您不必处理约束或布局。

标签: swift animation uistackview


【解决方案1】:

将两个视图放在UIStackView 中。将出口设置到两个子视图。 (您不一定需要堆栈视图本身的出口。)当您将其中一个设置为isHidden = true时,堆栈视图会负责将其从可见内容中“删除”而不保留非隐藏时它将占据的框架。在您的动画中,只需为 isHidden = [true|false] 语句设置动画即可。

【讨论】:

    【解决方案2】:

    XCode 9.1 和 Swift 4

    我会这样做:

    • 如果我在一个 StackView 中有两个 View:为两个 View 设置插座。
    • 在任何情况下,如按下按钮,只需隐藏我想要的视图:

    self.ViewTwo.isHidden = true

    • 像这样制作动画:

    UIView.animate(withDuration: 0.5) { self.ViewTwo.isHidden = true }

    • 当我只想回来时:

    UIView.animate(withDuration: 0.5) { self.ViewTwo.isHidden = false }

    动画的方向将根据堆栈视图中配置的设置(垂直或水平)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 2016-08-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多