【发布时间】:2015-07-10 11:31:30
【问题描述】:
问题
我正在尝试以模态方式呈现视图控制器(准确地说是 UIImagePickerController),同时在演示之前为一些视图设置动画。
请务必注意,动画和视图的呈现不是链式的,在动画视图和模态呈现图像选择器之间可能存在时间间隔。
话虽如此,当我呈现视图控制器时,似乎我所在的当前视图的所有子视图(我正在呈现的视图 - 父视图控制器的视图)都被重置为它们的原始的“故事板”位置,这会导致我在呈现图像选择器之前在视图中完成的所有动画都重置。
另一件值得注意的事情是,我使用 AutoLayout 来定位我制作动画的视图。
我添加了一个示例动画来显示问题 - 请注意在我单击“当前模态视图控制器”按钮后“动画”按钮如何立即恢复到原来的位置(我之前已经切换了“慢速动画”呈现模态视图控制器,以便您可以看到“动画”按钮弹回)。
我还添加了指向动画中显示的示例应用程序的链接,以便您更深入地检查问题,click here 下载它。
回答
为了解决这个问题,我使用了@kokx 的答案,并动画了视图的自动布局约束而不是它们的帧值。为此,我只是为要修改的约束创建了 outlet,并修改了约束的 constant 属性。
要为更改设置动画,只需调用原始[UIView animateWithDuration:options:animations:completion:],同时将animations: 部分的任何动画代码替换为对[self.view layoutIfNeeded] 的调用。
【问题讨论】:
标签: ios objective-c animation uikit modalviewcontroller