如何在 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