[Ios] सभी के ऊपर एक UIView जोड़ें, यहां तक कि नेविगेशन बार भी


Answers

[self.navigationController.view addSubview:overlayView]; क्या आप वास्तव में चाहते हैं

Question

मैं किसी भी अन्य विचारों के ऊपर प्रदर्शित करना चाहता हूं, यहां तक ​​कि नेविगेशन बार, एक तरह का "पॉप-अप" दृश्य जो इस तरह दिखता है:

  • नीचे दिए गए अन्य UIViewController को देखने के लिए 0.5 अल्फा के साथ पूर्ण स्क्रीन काली पृष्ठभूमि।
  • कुछ जानकारी के साथ मध्य में एक UIView विंडो, (यदि आप सब कुछ जानना चाहते हैं तो कैलेंडर)।

ऐसा करने के लिए, मैंने एक UIViewController बनाया है जिसमें दो UIViews (पृष्ठभूमि और विंडो) शामिल हैं, और मैं इसे प्रदर्शित करने की कोशिश कर रहा हूं। मैंने एक सरल [mySuperVC addSubview:myPopUpVC.view] की कोशिश की है, लेकिन मेरे पास अभी भी नेविगेशन बार है।

मैंने इसे एक मॉडल के रूप में प्रस्तुत करने का प्रयास किया है, लेकिन नीचे UIViewController गायब हो जाता है, और मैं अपना पारदर्शिता प्रभाव खो देता हूं।

ऐसा करने के लिए कोई विचार, मुझे यकीन है कि यह काफी सरल है ...

धन्यवाद!




नोट अगर आप पूर्ण स्क्रीन में दृश्य जोड़ना चाहते हैं तो केवल नीचे कोड का उपयोग करें

UIViewController के इन एक्सटेंशन को जोड़ें

public extension UIViewController {
   internal func makeViewAsFullScreen() {
      var viewFrame:CGRect = self.view.frame
      if viewFrame.origin.y > 0 || viewFrame.origin.x > 0 {
        self.view.frame = UIScreen.main.bounds
      }
   }
}

सबव्यूव की सामान्य जोड़ने की प्रक्रिया के रूप में जारी रखें

अब UIViewController के दृश्य DidAppear जोड़ने में उपयोग करें

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

     self.makeViewAsFullScreen()
}



मैं आपको एक नया UIWindow बनाने की सलाह देता हूं:

UIWindow *window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
window.rootViewController = viewController;
window.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
window.opaque = NO;
window.windowLevel = UIWindowLevelCFShareCircle;
window.backgroundColor = [UIColor clearColor];

[window makeKeyAndVisible];

फिर आप अपने दृश्य को अन्य UIViewController में प्रबंधित कर सकते हैं। खिड़कियों को हटाने के लिए:

[window removeFromSuperview];
window = nil;

उम्मीद है कि मदद मिलेगी!




[[UIApplication sharedApplication].windows.lastObject addSubview:myView];



तेजी से डेलफ महान समाधान:

self.navigationController?.view.addSubview(view)



चेक किए गए प्रतिक्रिया के लिए स्विफ्ट संस्करण:

स्विफ्ट 4:

let newView = UIView()
UIApplication.shared.keyWindow?.addSubview(newView)

स्विफ्ट 3.1:

let newView = UIView()
UIApplication.sharedApplication().keyWindow?.addSubview(newView)