यह कोड iOS6 और iOS7 के तहत iPhone पर ठीक काम करता है:
presentedVC.view.backgroundColor = YOUR_COLOR; // can be with 'alpha'
presentingVC.modalPresentationStyle = UIModalPresentationCurrentContext;
[presentingVC presentViewController:presentedVC animated:YES completion:NULL];
इस मामले में आप स्लाइड-ऑन एनीमेशन को याद करते हैं। एनीमेशन को बनाए रखने के लिए आप अभी भी "गैर-सुरुचिपूर्ण" एक्सटेंशन का उपयोग कर सकते हैं:
[presentingVC presentViewController:presentedVC animated:YES completion:^{
[presentedVC dismissViewControllerAnimated:NO completion:^{
presentingVC.modalPresentationStyle = UIModalPresentationCurrentContext;
[presentingVC presentViewController:presentedVC animated:NO completion:NULL];
}];
}];
यदि हमारा प्रेजेंटिव UINavigationController या UITabbarController के अंदर स्थित है, तो आपको उस कंट्रोलर के साथ प्रेजेंट करने की आवश्यकता होती है, जैसे कि प्रेजिंगवीवी।
इसके अलावा, iOS7 में आप कस्टम ट्रांस्फ़ॉर्मेशन एनीमेशन लागू करने वाले UIViewControllerTransitioningDelegate
प्रोटोकॉल को लागू कर सकते हैं । बेशक, इस मामले में आप पारदर्शी पृष्ठभूमि प्राप्त कर सकते हैं
@interface ModalViewController : UIViewController <UIViewControllerTransitioningDelegate>
सबसे पहले, प्रस्तुत करने से पहले आपको सेट करना होगा modalPresentationStyle
modalViewController.modalPresentationStyle = UIModalPresentationCustom;
फिर आपको दो प्रोटोकॉल विधियों को लागू करना होगा
- (id<UIViewControllerAnimatedTransitioning>)animationControllerForPresentedController:(UIViewController *)presented presentingController:(UIViewController *)presenting sourceController:(UIViewController *)source
{
CustomAnimatedTransitioning *transitioning = [CustomAnimatedTransitioning new];
transitioning.presenting = YES;
return transitioning;
}
- (id<UIViewControllerAnimatedTransitioning>)animationControllerForDismissedController:(UIViewController *)dismissed
{
CustomAnimatedTransitioning * transitioning = [CustomAnimatedTransitioning new];
transitioning.presenting = NO;
return transitioning;
}
आखिरी चीज CustomAnimatedTransitioning
कक्षा में आपके कस्टम संक्रमण को परिभाषित करना है
@interface CustomAnimatedTransitioning : NSObject <UIViewControllerAnimatedTransitioning>
@property (nonatomic) BOOL presenting;
@end
@implementation CurrentContextTransitionAnimator
- (NSTimeInterval)transitionDuration:(id <UIViewControllerContextTransitioning>)transitionContext
{
return 0.25;
}
- (void)animateTransition:(id <UIViewControllerContextTransitioning>)transitionContext
{
UIViewController *fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
if (self.presenting) {
// custom presenting animation
}
else {
// custom dismissing animation
}
}