मुझे एक समस्या मिली और मैंने इसे नीचे वर्णित किया है।
मैं UIViewControllerContextTransitioning
कस्टम बदलाव के लिए उपयोग कर रहा हूं ।
मेरे पास 2 व्यू कंट्रोलर हैं, पहला व्यू कंट्रोलर और दूसरा व्यू कंट्रोलर।
अब मैं एक एनीमेशन के साथ पहले दृश्य नियंत्रक पर दूसरा दृश्य नियंत्रक जोड़ना चाहता हूं। मैंने इसे प्राप्त कर लिया है, अब दूसरा दृश्य नियंत्रक पारदर्शी है, इसलिए हम दूसरे दृश्य नियंत्रक के नीचे पहला दृश्य नियंत्रक देख सकते हैं।
लेकिन मैं पहले दृश्य नियंत्रक को देखने में सक्षम नहीं हूं, और मैं दूसरे दृश्य नियंत्रक के नीचे केवल काली स्क्रीन देख सकता हूं।
-(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];
कहा जाता है, तो अचानक पहला दृश्य नियंत्रक गायब हो जाता है और दूसरी स्क्रीन नियंत्रक के नीचे काली स्क्रीन प्रदर्शित होती है।
किसी एक विचार है? धन्यवाद।