J'ai eu un problème et j'ai décrit ci-dessous.
Je suis à l'aide de UIViewControllerContextTransitioning pour les transitions personnalisées.
J'ai 2 contrôleurs de vue , à première vue, contrôleur et la seconde vue contrôleur.
Maintenant, je veux ajouter secondview contrôleur à première vue-contrôleur avec animation. J'ai réalisé cela, j'ai maintenant secondview contrôleur transparent , de sorte que nous pouvons voir à première vue-contrôleur ci-dessous secondview contrôleur.
Mais je ne suis pas en mesure de voir à première vue-contrôleur , et je peux voir que du noir de l'écran ci-dessous secondview contrôleur.
Voici le code.
-(void)animateTransition:(id)transitionContext{
self.transitionContext = transitionContext; if(self.isPresenting){ [self executePresentationAnimation:transitionContext]; } else{ [self executeDismissalAnimation:transitionContext]; } }
-(void)executePresentationAnimation:(id<UIViewControllerContextTransitioning>)transitionContext{
UIView* inView = [transitionContext containerView];
UIViewController* toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
UIViewController* fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
CGRect offScreenFrame = inView.frame;
offScreenFrame.origin.y = inView.frame.size.height;
toViewController.view.frame = offScreenFrame;
toViewController.view.backgroundColor = [UIColor clearColor];
fromViewController.view.backgroundColor = [UIColor clearColor];
inView.backgroundColor = [UIColor clearColor];
[inView insertSubview:toViewController.view aboveSubview:fromViewController.view];
// [inView addSubview:toViewController.view];
CFTimeInterval duration = self.presentationDuration;
CFTimeInterval halfDuration = duration/2;
CATransform3D t1 = [self firstTransform];
CATransform3D t2 = [self secondTransformWithView:fromViewController.view];
[UIView animateKeyframesWithDuration:halfDuration delay:0.0 options:UIViewKeyframeAnimationOptionCalculationModeLinear animations:^{
[UIView addKeyframeWithRelativeStartTime:0.0f relativeDuration:0.5f animations:^{
fromViewController.view.layer.transform = t1;
}];
[UIView addKeyframeWithRelativeStartTime:0.5f relativeDuration:0.5f animations:^{
fromViewController.view.layer.transform = t2;
}];
} completion:^(BOOL finished) {
}];
[UIView animateWithDuration:duration delay:(halfDuration - (0.3*halfDuration)) usingSpringWithDamping:0.7f initialSpringVelocity:6.0f options:UIViewAnimationOptionCurveEaseIn animations:^{
toViewController.view.frame = inView.frame;
} completion:^(BOOL finished) {
[self.transitionContext completeTransition:YES];
}];
}
Lors de l' [self.transitionContext completeTransition:YES];
appelé, tout à coup le premier-vue-contrôleur disparaît et l'écran noir s'affiche au-dessous de seconde vue-contrôleur.
Est-ce une quelconque idée ? Merci.