如何在 StackView 内的两个视图之间进行动画处理?

Posted

技术标签:

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

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

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

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

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

谢谢。

【问题讨论】:

根据你的描述,我会用 UICollectionView 来研究解决方案,而不是常规的 UIViews。 更容易操作。 我不同意。在这种情况下,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

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

【讨论】:

以上是关于如何在 StackView 内的两个视图之间进行动画处理?的主要内容,如果未能解决你的问题,请参考以下文章

指定stackview的arrangedSubviews之间的不同间距

collectionview 或 uitableview 内的 Stackview

如何使用滚动视图使隐藏的按钮菜单出现/消失?

StackView 内的 Xcode 11 ScrollView

使用swift在scrollview内的stackview中更改uibutton中的标题

如何在情节提要 Xcode 11 中的视图之间将边距设置为零