【问题标题】:IB Elements Jump Back To Original Position [duplicate]IB 元素跳回原始位置 [重复]
【发布时间】:2012-11-25 04:23:48
【问题描述】:

可能重复:
UIView Animation Inconsistent Result

我有一个 iPhone 应用程序,我在 Interface Builder 中设置了其中一个视图控制器的许多 UI 元素,这样当视图加载时,这些元素会动画到我想要的位置。但是,在其中一个按钮上,我有一个点击手势,它通过将黑色 UIView 放在前面并将其 alpha 属性设置为 0.5 来使屏幕变暗。

每当背景调光器出现在最前面时,我在不同位置设置动画的所有 UI 元素都会跳回它们最初放置的位置。

我希望我可以发布代码,但我不能,因为这是一项商业冒险。

有人认为他们有想法吗?

编辑:一个明显的解决方法是,一旦我调出背景调光器,只需将其他所有内容恢复到应有的位置即可。但这是一个混乱的解决方案,我宁愿让他们留在他们动画的地方。

另外,我通过使用 CGRectMake 设置框架来为它们设置动画,如果有帮助的话。

编辑 2:

跳转是由调用引起的:

[self.view bringSubviewToFront:view];

我不知道如何阻止这种情况发生。

【问题讨论】:

  • 您确定问题的原因是背景调光器出现在前面,还是它们只是同时发生?能否把将背景调光器调到最前面的代码注释掉,看看问题是否依然存在?
  • 好的,所以它在没有调光器的情况下发生。好决定。它发生在对 BringSubviewToFront 的调用中。
  • 它可能与约束有关(请参阅 Rob 的链接),但我无法复制它。我有一个小测试应用程序,我制作了动画标签(通过设置框架)。这些标签在 IB 中设置了约束,但这并不能阻止动画工作。我添加了另一个视图,例如您的 dimmer 视图,当我调用 bringSubviewToFront: 时没有任何反应:(除了应该的)。

标签: objective-c ios


【解决方案1】:

必须感谢@rob mayoff。这与在这个问题中讨论的故事板中使用自动布局有关:Autolayouts

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 2012-04-21
    • 2017-12-12
    • 2014-11-16
    相关资源
    最近更新 更多