한 가지 문제가 있으며 아래에 설명했습니다.
UIViewControllerContextTransitioning
사용자 지정 전환에 사용 하고 있습니다.
두 개의 뷰 컨트롤러, 첫 번째 뷰 컨트롤러와 두 번째 뷰 컨트롤러가 있습니다.
이제 애니메이션과 함께 첫 번째 뷰 컨트롤러에 두 번째 뷰 컨트롤러를 추가하고 싶습니다. 이제 두 번째 뷰 컨트롤러가 투명하므로 두 번째 뷰 컨트롤러 아래에서 첫 번째 뷰 컨트롤러를 볼 수 있습니다.
하지만 첫 번째 뷰 컨트롤러가 보이지 않고 두 번째 뷰 컨트롤러 아래에는 검은 색 화면 만 보입니다.
-(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];
}];
}
경우 [self.transitionContext completeTransition:YES];
라고 갑자기 제 뷰 컨트롤러가 사라지고 초 뷰 컨트롤러 아래에 블랙 스크린 디스플레이.
아무도 아이디어가 있습니까? 감사.