Как использовать Auto Layout с контейнерными переходами?

Как вы можете использовать Auto Layout с методом перехода контейнера UIViewController:

-(void)transitionFromViewController:(UIViewController *)fromViewController
                   toViewController:(UIViewController *)toViewController 
                           duration:(NSTimeInterval)duration
                            options:(UIViewAnimationOptions)options
                         animations:(void (^)(void))animations
                         completion:(void (^)(BOOL finished))completion;

Традиционно, используя Springs / Struts, вы устанавливаете начальные кадры (непосредственно перед вызовом этого метода) и устанавливаете последние кадры в блоке анимации, который вы передаете методу.

Этот метод выполняет работу по добавлению представления в иерархию представлений и запуску анимаций для вас.

Проблема в том, что ты сможешьt добавить начальные ограничения в том же месте (перед вызовом метода), потому что представление еще не было добавлено в иерархию представления.

Любые идеи, как я могу использовать этот метод вместе с Auto Layout?

Ниже приведен пример (спасибо, кокоанетика), с помощью пружин / распорок (фреймы).http://www.cocoanetics.com/2012/04/containing-viewcontrollers

- (void)transitionFromViewController:(UIViewController *)fromViewController toViewController:(UIViewController *)toViewController
{

    // XXX We can't add constraints here because the view is not yet in the view hierarchy
    // animation setup 
    toViewController.view.frame = _containerView.bounds;
    toViewController.view.autoresizingMask = _containerView.autoresizingMask;

    // notify
    [fromViewController willMoveToParentViewController:nil];
    [self addChildViewController:toViewController];

    // transition
    [self transitionFromViewController:fromViewController
                      toViewController:toViewController
                              duration:1.0
                               options:UIViewAnimationOptionTransitionCurlDown
                            animations:^{
                            }
                            completion:^(BOOL finished) {
                                [toViewController didMoveToParentViewController:self];
                                [fromViewController removeFromParentViewController];
                            }];
}

Ответы на вопрос(4)

Ваш ответ на вопрос