मेरे पास एक UIViewController
अन्य UIViewController
दृश्य के शीर्ष पर एक सबव्यू / मोडल के रूप में एक दृश्य है, जैसे कि सबव्यू / मोडल पारदर्शी होना चाहिए और सबव्यू में जो भी घटक जोड़ा जाता है वह दिखाई देना चाहिए। समस्या यह है कि मेरे पास सब-क्लीयर होने के बजाय सबव्यू ब्लैक बैकग्राउंड दिखाता है। मैं UIView
एक स्पष्ट पृष्ठभूमि के रूप में बनाने की कोशिश कर रहा हूँ काली पृष्ठभूमि नहीं। क्या किसी को पता है कि इसमें क्या गलत है? किसी भी सुझाव की सराहना की।
FirstViewController.m
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
[vc setModalPresentationStyle:UIModalPresentationFullScreen];
[self presentModalViewController:vc animated:NO];
SecondViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.opaque = YES;
self.view.backgroundColor = [UIColor clearColor];
}
RESOLVED : मैंने मुद्दे तय किए। यह iPhone और iPad दोनों के लिए इतना अच्छा काम कर रहा है। बिना काले बैकग्राउंड वाले मोडल व्यू कंट्रोलर सिर्फ क्लियर / पारदर्शी। केवल एक चीज है कि मैं परिवर्तन करने की जरूरत है मैं बदल दिया है UIModalPresentationFullScreen
करने के लिए UIModalPresentationCurrentContext
। कितना सरल है!
FirstViewController.m
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
vc.view.backgroundColor = [UIColor clearColor];
self.modalPresentationStyle = UIModalPresentationCurrentContext;
[self presentViewController:vc animated:NO completion:nil];
सूचना: यदि आप एक modalPresentationStyle
संपत्ति का उपयोग कर रहे हैं navigationController
:
FirstViewController.m
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
vc.view.backgroundColor = [UIColor clearColor];
self.navigationController.modalPresentationStyle = UIModalPresentationCurrentContext;
[self presentViewController:vc animated:NO completion:nil];
सूचना: बुरी खबर यह है कि उपरोक्त समाधान iOS 7 पर काम नहीं करता है। अच्छी खबर यह है कि मैंने iOS7 के लिए मुद्दा तय कर दिया है! मैंने किसी से मदद माँगी और यहाँ उसने कहा:
एक दृश्य नियंत्रक को औपचारिक रूप से प्रस्तुत करते समय, iOS दृश्य नियंत्रक को उसके द्वारा प्रस्तुत की गई अवधि के लिए दृश्य पदानुक्रम से हटा देता है। यद्यपि आपके सामान्य रूप से प्रस्तुत दृश्य नियंत्रक का दृश्य पारदर्शी है, लेकिन ऐप विंडो के अलावा इसके नीचे कुछ भी नहीं है, जो कि काला है। iOS 7 ने एक नई मोडल प्रस्तुति शैली पेश की UIModalPresentationCustom
, जिसके कारण iOS प्रस्तुत दृश्य नियंत्रक के नीचे के विचारों को नहीं हटा सकता है। हालांकि, इस मोडल प्रस्तुति शैली का उपयोग करने के लिए, आपको प्रस्तुति को संभालने और एनिमेशन को खारिज करने के लिए अपना स्वयं का संक्रमण प्रतिनिधि प्रदान करना होगा। यह डब्ल्यूडीडीसी 2013 https://developer.apple.com/wwdc/videos/?id=218 से 'कस्टम ट्रांज़िशन यूज़ व्यू कंट्रोलर्स की बात का उपयोग' में उल्लिखित है, जिसमें यह भी शामिल है कि अपने स्वयं के संक्रमण प्रतिनिधि को कैसे लागू किया जाए।
आप iOS7 में उपरोक्त मुद्दे के लिए मेरा समाधान देख सकते हैं: https://github.com/hightech/iOS-7-Custom-ModalViewController-Transitions
modalViewController.modalPresentationStyle = UIModalPresentationOverCurrentContext;
इस मुद्दे को हल करेगा,