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



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

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

但完成后,"from view"为零,再切换一次后,两个视图都为零。有没有其他方法可以在视图之间切换并保持两者都在?然后,我不必在显示时再次填充和初始化它们。每次用户翻转时,对一个有很多引脚的地图这样做有点糟糕。

来自文档:

从视图

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

to查看

过渡的结束视图。默认情况下,此视图会添加到fromView的superview作为转换的一部分。

讨论

此方法提供了从fromView参数中的视图到toView参数中视图。通过默认情况下,fromView中的视图在视图层次结构中被在to view中查看如果两个视图都已经是视图层次结构的一部分,可以包括UIViewAnimationOptionShowHideTransitionViewsoptions参数中的选项,以简单地隐藏或显示它们

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

相关内容

最新更新