【发布时间】:2012-11-25 04:23:48
【问题描述】:
我有一个 iPhone 应用程序,我在 Interface Builder 中设置了其中一个视图控制器的许多 UI 元素,这样当视图加载时,这些元素会动画到我想要的位置。但是,在其中一个按钮上,我有一个点击手势,它通过将黑色 UIView 放在前面并将其 alpha 属性设置为 0.5 来使屏幕变暗。
每当背景调光器出现在最前面时,我在不同位置设置动画的所有 UI 元素都会跳回它们最初放置的位置。
我希望我可以发布代码,但我不能,因为这是一项商业冒险。
有人认为他们有想法吗?
编辑:一个明显的解决方法是,一旦我调出背景调光器,只需将其他所有内容恢复到应有的位置即可。但这是一个混乱的解决方案,我宁愿让他们留在他们动画的地方。
另外,我通过使用 CGRectMake 设置框架来为它们设置动画,如果有帮助的话。
编辑 2:
跳转是由调用引起的:
[self.view bringSubviewToFront:view];
我不知道如何阻止这种情况发生。
【问题讨论】:
-
您确定问题的原因是背景调光器出现在前面,还是它们只是同时发生?能否把将背景调光器调到最前面的代码注释掉,看看问题是否依然存在?
-
好的,所以它在没有调光器的情况下发生。好决定。它发生在对 BringSubviewToFront 的调用中。
-
它可能与约束有关(请参阅 Rob 的链接),但我无法复制它。我有一个小测试应用程序,我制作了动画标签(通过设置框架)。这些标签在 IB 中设置了约束,但这并不能阻止动画工作。我添加了另一个视图,例如您的 dimmer 视图,当我调用 bringSubviewToFront: 时没有任何反应:(除了应该的)。
标签: objective-c ios