我正在使用segue(模态)从一个视图控制器导航到下一个视图控制器。但是我使用自定义segue,以便在转换发生时不涉及动画。相反,我在视图控制器(视图)内的子视图上有我自己的动画。这里一切都很好。
但是当我使用dismissModalViewControllerAnimated:
从显示的视图控制器移回我的视图控制器时,会出现一个小的打嗝。
以下是我从目标视图控制器调用方法的代码。
[UIView animateWithDuration:1.0 delay:0.0 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
[self dismissModalViewControllerAnimated:NO];
} completion:nil];
我在父视图控制器的viewWillAppear
中有以下代码
-(void)viewWillAppear:(BOOL)animated{
ContainerView *containerView = (ContainerView *)[[[self.view subviews]objectAtIndex:0] viewWithTag:CONTAINER_TAG];
int i=0;
for (UIView *vw in containerView.subviews) {
[vw setFrame:[[containerView.initialFrameArray objectAtIndex:i] CGRectValue]];
i++;
}
}
只要它处于纵向模式,这也可以正常运行。当它处于任何其他方向时,动画仍然有效但是整个视图还有一个旋转,就像整个设备的方向从纵向更改为当前方向一样。它好像父视图控制器(视图)的方向存储为纵向。当调用dismissModalViewControllerAnimated:
时,即使设备处于横向方向,整个视图也会旋转以再次进入横向视图。
在关闭模态视图控制器之前,有没有办法将父视图控制器的方向(存储)更改为横向?
或者我在实现自定义动画时做错了什么?