【问题标题】:How to do a view controller transition where the selected view stays in place and fades out如何在所选视图保持原位并淡出的情况下进行视图控制器转换
【发布时间】:2014-08-07 13:17:02
【问题描述】:

我有兴趣做一个转换,它是一个标准的推送转换,但 fromViewController 将在 toViewController 滑动到位时将选定的 UIView 保留在 toViewController 的顶部。我试图在下面模拟这个。

左边的方框代表UIViews和第三个(棕色的_是被点击的那个。在中间的图中,fromViewController向左滑动(当toViewController滑入时,被选中的UIView保持不变)到位并有一个淡出它的动画。

我对自定义过渡不太熟悉,但我认为这就是它的完成方式。可能在 Container View Controller 的上下文中,但老实说,不太确定。关于如何实现这种效果的任何想法?我希望当用户点击“返回”按钮时,也可以反向运行效果。

【问题讨论】:

    标签: ios ios7 uikit-transitions


    【解决方案1】:

    这很容易实现。首先,创建一个自定义容器控制器。您需要类似导航控制器的控制器堆栈吗?如果是,实施将相当复杂。无论如何,它看起来像这样:

    - (void)showViewController:(UIViewController *)viewController
                  selectedView:(UIView *)selectedView
    {
        // Tell prev. controller about pending removing
        [_currentController willMoveToParentViewController:nil];
    
        // Add the next controller
        [self addChildViewController:viewController];
    
        // Move selected view to the Containers view
        [self.view addSubview:selectedView];
    
        // Add toView below fromView
        [self.view insertSubview:viewController.view 
                    belowSubview:_currentController.view];
    
        // Animate whatever you need
        [UIView animateWithDuration:0.25
                         animations:^
         {
             // Move from view
             CGPoint fromViewCenter = viewController.view.center;
             fromViewCenter.x = -0.5 * viewController.view.frame.size.width;
             viewController.view.center = fromViewCenter;
    
             // Fade out the selected view 
             selectedView.alpha = 0;
         }
                         completion:^
         {
             // Clean
             [_currentController.view removeFromSuperview];
    
             // Finally remove prev. controller from the hierarchy
             [_currentController removeFromParentViewController];
    
             // Notify 
             [viewController didMoveToParentViewController:self];
         }];
    
    }
    

    希望你自己能做到逆转。

    【讨论】:

      猜你喜欢
      • 2020-04-24
      • 2017-08-09
      • 2016-11-10
      • 1970-01-01
      • 1970-01-01
      • 2013-08-28
      • 1970-01-01
      • 1970-01-01
      • 2021-03-13
      相关资源
      最近更新 更多