在动画 UI 元素时暂时禁用/删除约束

Posted

技术标签:

【中文标题】在动画 UI 元素时暂时禁用/删除约束【英文标题】:Temporarily disable/remove constraints while animating UI elements 【发布时间】:2016-09-15 16:14:33 【问题描述】:

我已经在故事板控制器中很好地设置了我的 UI。运行该应用程序,iPhone 5S 模拟器中的一切看起来和运行良好。更重要的是,在代码中拥有自己的 IBOutlet(用于动画目的)的所有 UI 元素都按照编程的方式运行:当方法在需要时为这些 UI 元素设置动画时,按预期移动。

但是,我通过单击情节提要内的控制器来添加约束 --> 编辑器 --> 解决自动布局问题 --> 添加缺少的约束。在那之后,动画停止工作,因为约束使它们保持在原位。

是否有某种命令/代码可以在动画期间“暂停/停止/删除/禁用”约束,然后在动画完成后将它们添加回来,而无需手动添加约束?

【问题讨论】:

【参考方案1】:

同时使用动画和自动布局的最佳方式是创建 UI 元素(UILabel、UIButton 等)的 IBOutlet。

您可以根据您的动画要求更改它们的常量值。

【讨论】:

“常数”是难题的重要组成部分。【参考方案2】:

如果您使用自动布局,则不应尝试通过更改视图的框架来移动视图。相反,您应该对约束进行动画更改。

有关提示,请参阅此 *** 答案:

How do I animate constraint changes?

【讨论】:

好的。所以禁用约束是不可能的。如果现在只能通过操纵实际约束来实现动画,那么这就需要一种新的动画方法。感谢您的链接:这应该让我开始。

以上是关于在动画 UI 元素时暂时禁用/删除约束的主要内容,如果未能解决你的问题,请参考以下文章

在 JavaScript 中更改 HTML 元素的样式并暂时禁用其 CSS 转换无法可靠运行 [重复]

如何暂时禁用滚动?

jQuery UI 可拖动 - 当内部元素大于父元素时,将内部元素约束在父元素中

UI元素的动画?

单击按钮时暂时禁用悬停(jQuery)

Select2 - 在选择时,从下一个选择元素中删除禁用的属性