Iphone 如何使用动画切换视图-objective c

Iphone 如何使用动画切换视图-objective c,iphone,objective-c,uiview,uianimation,uiviewanimationtransition,Iphone,Objective C,Uiview,Uianimation,Uiviewanimationtransition,我有一个viewController,它有一个tableView和一个mapView,并且只有一个是可见的。 我还有一个带段控制的工具栏,有两个按钮(列表和地图) 如何在表视图和地图视图之间切换?重要的是,工具栏将保持锁定,而不使用视图设置动画。您可以使用UIView动画转换,传递转换视图的superview: - (IBAction)segmentIndexChanged { BOOL showingMapView = (BOOL)self.segmentedControl.select

我有一个viewController,它有一个tableView和一个mapView,并且只有一个是可见的。 我还有一个带段控制的工具栏,有两个按钮(列表和地图)


如何在表视图和地图视图之间切换?重要的是,工具栏将保持锁定,而不使用视图设置动画。

您可以使用
UIView
动画转换,传递转换视图的superview:

- (IBAction)segmentIndexChanged {
   BOOL showingMapView = (BOOL)self.segmentedControl.selectedSegmentIndex;
   [UIView transitionWithView:self.view
                     duration:1.0
                      options:UIViewAnimationOptionTransitionFlipFromLeft 
                   animations:^{
     self.mapView.hidden   = !showingMapView;
     self.tableView.hidden = showingMapView;
   } completion:nil];
}

请尝试以下代码以显示表格和地图视图:

在segmentedControlIndexChanged中隐藏mapview和tableview:

- (IBAction)segmentedControlIndexChanged {
    switch (self.segmentedControl.selectedSegmentIndex) {
        case 0: //it's show tableview
            [UIView transitionWithView: self.view
                              duration:1.0 
                               options:UIViewAnimationOptionTransitionFlipFromLeft
                            animations:^{
                                self.mapView.hidden   = YES;
                                self.tableView.hidden = NO; }
                            completion:nil];

              break;

        case 1: //it's show mapview
            [UIView transitionWithView:self.view
                              duration:1.0
                               options:UIViewAnimationOptionTransitionFlipFromLeft
                            animations:^{
                                self.mapView.hidden   = NO;
                                self.tableView.hidden = YES; }
                            completion:nil];
            break;

        default:
              break;
    }
}

经过深思熟虑,我找到了一个解决方案,添加另一个视图作为表视图和地图视图的容器视图。
这样我可以做到:

   [UIView transitionWithView:self.someContainerView
                     duration:1.0
                     options:UIViewAnimationOptionTransitionFlipFromLeft 
                     animations:^{
                         self.mapView.hidden   = !showingMapView;
                         self.tableView.hidden = showingMapView;
                     } completion:nil
    ];  

不翻转工具栏

谢谢,问题是我的工具栏也在动画中,我想是因为他也是view@Eyal你很可能是说它是一个子视图而不是一个子类,对吗?谢谢,问题是我的工具栏也在动画中,我想,因为他也是视图的一个子类。如果这就是你解决问题的方式,请将其标记为正确答案。如何?当我按下“接受答案复选标记”时,它说我可以在两天内接受我自己的答案。好的,对不起,我忘记了这个限制。只是确定一下!