Mein Ziel ist es, Zoomen modalen Übergang für den Benutzer aus einer ähnlichen Ansicht wie springen Sprungbrettzeichen beim Starten von Apps.Navigationsleiste wird nach Aufruf von completeTransition angepasst: in benutzerdefinierten Übergang
Der vorgestellte View-Controller zoomt korrekt, aber die Navigationsleiste hat eine falsche Position unter der Statusleiste. Diese Position wird nach dem Aufruf von [transitionContext completeTransition: finished] korrigiert. Wie kann ich es von Anfang an richtig machen?
Dies ist eine Bildschirmaufnahme des Fehlers: http://youtu.be/7LKU4lzb-uw (der Fehler im sechsten Sekunde der Aufnahme ist)
Der UIViewControllerAnimatedTransitioning Code:
- (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];
}];
}
Können Sie den y-Ursprung der entsprechenden Ansicht nicht anpassen? –
Wenn ich das tue, ist der Bereich unterhalb der Statusleiste schwarz, nicht grün (der gesamte Controller wird nach unten verschoben). –
Woher kommt self.view? Ist der präsentierende View-Controller auch der Animations-Controller? – bilobatum