Как использовать 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];
}];
}