Bir sorunum var ve bunu aşağıda açıkladım.
UIViewControllerContextTransitioning
Özel geçişler için kullanıyorum .
2 görünüm denetleyicim, birinci görünüm denetleyicim ve ikinci görünüm denetleyicim var.
Şimdi birinci görünüm denetleyicisine bir animasyonla ikinci görünüm denetleyicisi eklemek istiyorum. Bunu başardım, şimdi ikinci görüntü denetleyicisi şeffaf, böylece birinci görüntü denetleyicisini ikinci görüntü denetleyicisinin altında görebiliriz.
Ancak ilk görüntü denetleyicisini göremiyorum ve ikinci görüntü denetleyicisinin altında yalnızca siyah ekran görebiliyorum.
-(void)animateTransition:(id<UIViewControllerContextTransitioning>)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];
}];
}
Ne zaman [self.transitionContext completeTransition:YES];
denilen, aniden ilk görünüm denetleyicisi kaybolur ve ikinci görünüm denetleyicisi altında siyah ekran görüntülenir.
Herhangi birinin fikri var mı? Teşekkürler.