最初不在屏幕上的动画和视图的自动布局?

Posted

技术标签:

【中文标题】最初不在屏幕上的动画和视图的自动布局?【英文标题】:Autolayout for animations and views not initially on screen? 【发布时间】:2015-05-07 03:37:44 【问题描述】:

我喜欢自动布局,并且大部分时间我已经克服了最初的挫败感。但是我不明白的一件事是如何将它用于您从屏幕外视图开始并希望在屏幕上对其进行动画处理的情况。

如何为尚未出现在屏幕上的视图设置约束?因为它不在屏幕上,所以我无法通过坚持涵盖手机距离的布局指南来启用可变高度和宽度。

感谢任何帮助。

【问题讨论】:

可以通过改变约束的常量来改变视图的位置,也可以在不改变视图框架的情况下为图层设置动画。看看这个教程objc.io/issue-12/animations-explained.html 【参考方案1】:

仅供参考:您可以拥有约束条件的 IBOutlet。

现在,假设您有一个宽度为 100,高度为 100 的视图。

如果您想通过使用自动布局更改其宽度和高度来为该视图设置动画,您需要执行以下步骤。

第 1 步:为该视图设置宽高约束。(即,Width=100,Height=100)。

第 2 步:在 ViewController 中获取该视图的约束的 IBOutlet。

第 3 步: 每当您想通过动画更改其宽度和高度时,请更改该约束的 constant 属性。

例如:

widthContraint.constant = 50
heightContraint.constant = 50

第四步:改变常量后,调用动画块中的layoutSubviews()方法进行动画。

例如:

UIView.animateWithDuration(2.0, animations: 
        self.view.layoutSubviews()
    )

这将在 2.0 秒内将视图的宽度和高度从 100 更改为 50

对于不在屏幕上的视图:

将该视图的宽度和高度设为 0。 然后将其增加到您想要的任何值。

【讨论】:

该死的。这使事情变得容易得多。我怎么没有把这上面的点联系起来? 对不起,我没听明白,你能解释一下吗?你说的是哪个点? 这只是一个比喻。连接点意味着将事物拼凑在一起以获得全面的理解。 @TonyFriz,哦,是的,我知道了。

以上是关于最初不在屏幕上的动画和视图的自动布局?的主要内容,如果未能解决你的问题,请参考以下文章

键盘显示和隐藏上的动画自动布局约束

如何使用自动布局动画视图更改视图层次结构?

4英寸屏幕上的自动布局

UICollectionView 上的动画自动布局约束更改

Swift - 大屏幕上的自动布局调整大小按钮

如何使用 Xcode 8 上的自动布局调整对象的大小以适应不同的屏幕尺寸?