如何在不将视图设置为nil的情况下进行水平翻转动画?

时间:2013-08-20 07:56:53

标签: ios uiview uianimation uiviewanimationtransition

我正在UIViewController内的地图和列表视图之间进行“标准”翻转,导航栏位于顶部,有一个按钮可以在地图显示和列表之间切换。 我正在使用此方法执行转换:

    [UIView transitionFromView:self.tableView
                        toView:self.mapView
                      duration:1
                       options:UIViewAnimationOptionTransitionFlipFromLeft
                    completion:nil];

但是在完成之后,“从 - 视图”是零,并且在再次切换之后,两个视图都是零。还有另一种方法可以在视图之间切换并保持两种视图吗?然后我不必在显示时再次填充和初始化它们。每次用户翻转时,对于有很多针脚的地图,这样做有点不好。

1 个答案:

答案 0 :(得分:1)

来自documentation

  

<强> fromView

     

过渡的起始视图。默认情况下,此视图   作为过渡的一部分,将从其超级视图中删除。

     

toView

     

过渡的结束视图。默认情况下,此视图将添加到   作为过渡的一部分,fromView的超级视图。

     

<强>讨论

     

这种方法提供了一种从中过渡的简单方法   在fromView参数中查看toView参数中的视图。通过   默认情况下,fromView中的视图在视图层次结构中被替换   在toView中查看。 如果两个视图都已经是视图层次结构的一部分,   你可以包含UIViewAnimationOptionShowHideTransitionViews   options参数中的选项只是隐藏或显示它们

因此,如果您没有将两个视图作为视图层次结构的一部分,为什么不事先添加它们呢?您可以在mapview下面插入tableView作为子视图(因此最初不会显示),然后使用UIViewAnimationOptionShowHideTransitionViews UIViewAnimationOptionTransitionFlipFromLeft作为选项调用转换。