UIViewController容器子控制器动画

时间:2012-02-29 18:00:30

标签: ios animation uiviewcontroller

我为iPad创建了自己的分割视图控制器。我创建自己的主要目的是允许用户随意打开/关闭左侧疼痛。我遇到的问题是我无法找到一种方法让我的右手痛苦中的视图控制器动画更改。我在分割视图控制器中为视图设置动画,但右窗格中的所有其他子视图控制器都不会为其视图设置动画。我不是在切换视图,所以我不能使用任何这些方法而且我没有改变方向,所以这些方法都没有了(尽管如此,我确实尝试了它们但是它没有用)。有谁知道这样做的方法?

目前,我启动动画的代码是:

- (void) setShowLeftPane:(BOOL)showLeftPane{
    if (_showLeftPane != showLeftPane){
        _showLeftPane = showLeftPane;

        //Alert viewcontrollers and perform animation
        if (showLeftPane) [_leftController viewWillAppear:YES];
        else [_leftController viewWillDisappear:YES];
        [UIView animateWithDuration:.25 animations:^{ 
            [self layoutViews];
            [_rightController viewWillLayoutSubviews];
        } completion:^(BOOL fin){
            [_rightController viewDidLayoutSubviews];
            if (_showLeftPane) [_leftController viewDidAppear:YES];
            else [_leftController viewDidDisappear:YES];
        }];

        //Switch out the appropriate pane button view
        [_showLeftPane ? _openLeftPane : _closeLeftPane removeFromSuperview];
        [self.view addSubview:_showLeftPane ? _closeLeftPane : _openLeftPane];
    }
}

目前我的右窗格视图控制器是一个UINavigationController,所以我正在处理一个库存类。我已经考虑过向UINavigationController添加一个类别方法viewWillAnimateSubviewLayoutWithDuration:(NSTimeInterval)interval,它将循环通过它的视图控制器测试/发送相同的方法到它的视图控制器,以便他们可以执行他们的动画,但这不是很理想,特别是如果有的话使用股票方法的方法。

我正在考虑编写自己的NavigationController,但如果我不需要,那就是我不想做的很多工作。

1 个答案:

答案 0 :(得分:0)

对于那些关心的人,我最终编写了自己的导航容器控制器。这是一项很多工作,但由于一些原因,它最终成为理想选择。首先,创建自定义容器控制器让我对视图控制器的工作原理有了更深入的理解,这对我们很有帮助。其次,它让我能够更好地控制“导航控制器”的工作方式,让我可以轻松实现自定义过渡和自定义弹出/推送方法,包括我需要的“替换”(弹出,然后推送)方法。应用。