【问题标题】:Animating views constrained with auto layout动画视图受自动布局约束
【发布时间】:2015-12-09 22:41:01
【问题描述】:

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

我立即遇到了麻烦,因为我使用的是自动布局,它不像为背景颜色设置动画那么容易。我找到了这篇文章How do I animate constraint changes?,在完成了所描述的操作之后,至少我的图像有了动画效果。但是,控制台窗口应该充满有关违反约束的警告/信息/错误是否正确?此外,对一个图像的垂直位置进行动画处理会导致所有其他图像也进行动画处理,这可能是由于某些约束关系。

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

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

我正在情节提要中创建我的视图和约束。我删除了用于动画图像视图的代码,因为它只是一团糟。但是本教程中的按钮和文本字段所做的几乎就是我想要对我的图像做的事情。没有为一个图像设置动画,导致整个视图都使用它进行动画处理。 http://www.raywenderlich.com/113674/ios-animation-tutorial-getting-started

【问题讨论】:

  • 编辑您的问题以包含您的布局动画代码。此外,您如何在故事板或代码中创建视图和约束?
  • 更新问题。我删除了代码(不多),因为它只是一团糟。添加了指向我要实现的目标的链接(至少是相同的效果)。
  • 请提供您想要达到的目标的图形表示,我会建议您需要从代码更改或添加的约束,或者可能来自故事板。如果您只是想做该教程中的内容,您可以设置固定约束并使用 Canvas 为它们设置动画。否则,如果使用 Canvas 未完成您的要求,请提供一些图形。

标签: ios swift animation autolayout


【解决方案1】:

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

学习自动布局可能是一项挑战,会让您的一天充满关于约束的警告/信息/错误。许多 iOS 开发人员一开始都在与 Auto Layout 作斗争。自动布局是布局过程的补充。这里的问题是你将如何处理它们。我建议阅读Apple Auto Layout Guide,它包含关于debugging 的部分。另请查看Debugging Tricks and Tips 部分。

这里有一个很棒的article,解释了自动布局背后的更多概念。

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

这里是如何为约束设置动画的代码 sn-p。

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

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

你应该如何处理?

自动布局是视图之间相互关联的关系系统。 constraint 表示关系。所以你真的需要考虑你的视图布局并首先计划你的约束。为什么?因为如果您打算为某些视图设置动画,则需要确保您要更改的约束常数只会影响相关视图。

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

您可以仅在代码中或使用界面构建器(出口)创建约束。我建议您从界面构建器开始,因为即使您熟悉代码工作,能够在界面构建器中进行初始布局也是有用且节省时间的 - 因此请学习使用两者。

【讨论】:

    【解决方案2】:

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

    如果为一个图像的约束值设置动画会移动其他图像,那么确实必须有一些约束也会发生变化 - 例如“等宽”约束等。通常它可以正常工作 - 如果没有,您必须显示您收到的警告和您设置的限制,以便有人看到出了什么问题。

    【讨论】:

      猜你喜欢
      • 2013-12-04
      • 1970-01-01
      • 1970-01-01
      • 2019-06-05
      • 1970-01-01
      • 2015-07-31
      • 2014-05-26
      • 1970-01-01
      • 2017-08-09
      相关资源
      最近更新 更多