动画视图受自动布局限制

时间:2015-12-09 22:41:02

标签: ios swift animation autolayout

为了好玩,我在成功将它们应用到一些基本的背景颜色变化后开始使用动画。我在“欢迎/飞溅”视图中有一些不同的图像,我想要制作动画。一个图像应从底部出现,另一个图像应从顶部出现,依此类推。

我立即遇到麻烦,因为我使用自动布局,它并不像动画背景颜色那么容易。我发现这篇文章How do I animate constraint changes?并且在完成所描述的内容之后,至少我的图像是动画。但是,控制台窗口是否应填写有关约束违规的警告/信息/错误是否正确?此外,动画一个图像的垂直位置也会导致所有其他图像生成动画,这可能是因为某些约束关系。

你应该怎么处理?当使用新的常量值动画“底部布局属性”时,我只期望它属于动画的视图,而不是整个屏幕。

你应该如何参考约束?通过网点?

我在故事板中创建我的视图和约束。我删除了用于动画图像视图的代码,因为它只是一团糟。但是,本教程中的按钮和文本字段完成的内容几乎就是我尝试对我的图像进行的操作。没有动画一个图像,导致整个视图与它一起动画。 http://www.raywenderlich.com/113674/ios-animation-tutorial-getting-started

2 个答案:

答案 0 :(得分:2)

但是,控制台窗口是否应填写有关违反约束的警告/信息/错误是否正确?

学习自动布局可能是一个挑战,这将充满你关于约束的警告/信息/错误的日子。许多iOS开发人员最初都在使用Auto Layout。自动布局是布局过程的补充。这里的问题是你将如何处理它们。我建议您阅读Apple Auto Layout Guide,其中包含debugging部分。另请参阅Debugging Tricks and Tips部分。

这是一个很棒的article,解释了更多汽车布局背后的概念。

构建一个只有一个视图和一个子视图的简单应用程序,这样您就可以在更复杂的布局中减少布局约束错误周围的噪音。

以下是如何为约束设置动画的代码段。

if myViewTrailingConstraint.constant == -2 {
    myViewTrailingConstraint.constant = 200
} else {
    myViewTrailingConstraint.constant = -2
}

UIView.animateWithDuration(0.3,
    animations: {
        self.view.layoutIfNeeded()
    },
    completion: nil)

您应该如何应对?

自动布局是视图之间关系的互连系统。 constraint表示关系。因此,您需要首先考虑视图的布局并计划约束。为什么?因为如果您计划为某些视图设置动画,则需要确保您要更改的约束常量仅影响该视图。

你应该如何引用约束?通过网点?

您可以仅在代码中或使用界面构建器(出口)创建约束。我建议您从界面构建器开始,即使您在代码中工作很舒服,在界面构建器中进行初始布局也很有用并节省时间 - 因此请学会使用它们。

答案 1 :(得分:1)

警告不正常 - 您必须解决它们以避免产生奇怪的影响。

如果为一个图像的约束值设置动画会移动其他图像,那么实际上您必须具有一些也会发生变化的约束 - 例如"相等宽度"约束等。通常它只是工作 - 如果它没有,你必须显示你得到的警告和你设置的约束,以便有人看到出了什么问题。