Pasek nawigacji jest dostosowywany po wywołaniu completeTransition: w niestandardowym przejściu
Moim celem jest zapewnienie przejścia modalnego z zoomu dla użytkownika z widoku podobnego do powiększania ikon trampoliny podczas uruchamiania aplikacji.
Prezentowany kontroler widoku powiększa się prawidłowo, ale pasek nawigacji ma niewłaściwą pozycję pod paskiem stanu. Ta pozycja zostanie poprawiona po wywołaniu [transitionContext completeTransition: finished] ;. Jak mogę to poprawić od początku przejścia?
To jest nagranie ekranu błędu:http://youtu.be/7LKU4lzb-uw (usterka jest w szóstej sekundzie nagrania)
Kod UIViewControllerAnimatedTransitioning:
- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext
{
UIViewController *fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
UIView *container = [transitionContext containerView];
CGPoint viewCenter = self.view.center;
CGSize viewSize = self.view.frame.size;
CGSize controllerSize = toViewController.view.frame.size;
CGFloat controllerFromX = viewCenter.x - (controllerSize.width / 2);
CGFloat controllerFromY = viewCenter.y - (controllerSize.height / 2);
CGAffineTransform transform = CGAffineTransformMakeTranslation(controllerFromX, controllerFromY);
transform = CGAffineTransformScale(transform, viewSize.width / controllerSize.width, viewSize.height / controllerSize.height);
if (self.reverse) {
[container insertSubview:toViewController.view belowSubview:fromViewController.view];
} else {
toViewController.view.transform = transform;
[container addSubview:toViewController.view];
}
[UIView animateKeyframesWithDuration:ZoomTransitioningDuration
delay:0
options:0
animations:^{
if (self.reverse) {
fromViewController.view.alpha = 0.0f;
fromViewController.view.transform = transform;
} else {
toViewController.view.transform = CGAffineTransformIdentity;
}
}
completion:^(BOOL finished) {
[transitionContext completeTransition:finished];
}];
}