दिलचस्प पोस्ट
आप केवल Windows 'अंतर्निहित क्षमताओं का उपयोग करके स्क्रिप्ट से कैसे ज़िप या अनझिप कर सकते हैं? Std :: vector बनाम std :: list बनाम std :: slist का सापेक्ष प्रदर्शन गुमनाम प्रकार के परिणाम लौटें? Python में -0400 टाइमज़ोन स्ट्रिंग के साथ दिनांक कैसे विश्लेषित करें? उद्देश्य-सी में एक वर्ग के लिए निजी तरीकों को परिभाषित करने का सर्वोत्तम तरीका इकाई फ़्रेमवर्क में ऑपरेटर की तरह? एक अर्रे सूची में वस्तुओं को स्थानांतरित करना सामने विंडो को सामने लाएं WPF में मैं कैसे अजगर में एक यूआरएल को सामान्य कर सकता हूँ एनएलटीके / पायथन में मूवी रिव्यू कार्पस का वर्गीकरण एंड्रॉइड के साथ एक HTTP अनुरोध करें GCD क्वेरी समस्या निलंबित IEnumerable बनाम सूची – का उपयोग करने के लिए क्या? वो कैसे काम करते है? एक्सएचटीएमएल / सीएसएस: आंतरिक डिवाइंड को 100% चौड़ाई घटाकर दूसरे डिवा चौड़ाई कैसे बनाया जाए वालग्रिंड द्वारा अभी भी प्राप्य लीक का पता लगाया गया

आईपैड पॉपओवर की तरह आईफोन पॉपअप मेनू?

आईपैड में पॉप अप की तरह मैं आईफोन ऐप में इस पॉपअप मेनू को कैसे लागू कर सकता हूं?

वैकल्पिक शब्द


संपादित करें : यह सबसे अच्छा समय है: https://github.com/runway20/PopoverView यहां छवि विवरण दर्ज करें

वेब के समाधान से एकत्रित समाधान "आईपैड पॉपओवर की तरह आईफोन पॉपअप मेनू?"

IPhone UIPopoverController कार्यान्वयन पर एक नजर डालें: WEPopover

आईओएस 8 और बाद में

आईओएस 8 के साथ शुरू में, आप iPads के अलावा iPhones के लिए UIPopoverPresentationController उपयोग कर सकते हैं।

यहां छवि विवरण दर्ज करें

सेट अप

  • अपने मुख्य व्यू नियंत्रक को UIBarButtonItem जोड़ें।
  • स्टोरीबोर्ड में एक अन्य दृश्य नियंत्रक जोड़ें। इसे उस आकार में बदलें, जिसे आप पॉपओवर चाहते हैं और उस सामग्री को जोड़ना चाहते हैं जिसे आप चाहते हैं। मेरे उदाहरण के लिए मैंने सिर्फ एक UILabel जोड़ा। यदि आप एक पूर्ण मेनू चाहते हैं, तो बस एक तालिका दृश्य या बटनों की सूची जोड़ें।
  • बार नियंत्रक के लिए बार बटन आइटम से नियंत्रक को जोड़ें, जिसे आप पॉपओवर के रूप में उपयोग करेंगे। show बजाए, Present as Popover चुनें।

यहां छवि विवरण दर्ज करें

  • स्टोरीबोर्ड में popoverSegue चयन करें और पहचानकर्ता को popoverSegue (या जो भी स्ट्रिंग आप इसे कोड में कहते हैं) के लिए सेट करें।

यहां छवि विवरण दर्ज करें

  • Popover दृश्य नियंत्रक के लिए विशेषता निरीक्षक में, पसंदीदा आदी आकार का उपयोग करें चेक करें और पुष्टि करें कि यह वह आकार है जिसे आप चाहते हैं।

यहां छवि विवरण दर्ज करें

कोड

यह मुख्य व्यू नियंत्रक के लिए कोड है जिसमें उसमें बार बटन वस्तु है

 class ViewController: UIViewController, UIPopoverPresentationControllerDelegate { override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if segue.identifier == "popoverSegue" { let popoverViewController = segue.destinationViewController popoverViewController.modalPresentationStyle = UIModalPresentationStyle.Popover popoverViewController.popoverPresentationController!.delegate = self } } // MARK: - UIPopoverPresentationControllerDelegate method func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle { // Force popover style return UIModalPresentationStyle.None } } 

पॉपवर एक मनमानी एंकर बिंदु पर

यदि आप पॉपओवर को बार बटन आइटम (उदाहरण के लिए UIButton पर) के अलावा किसी अन्य जगह पर दिखाना चाहते हैं, तो आपको sourceView और sourceRect सेट करना sourceRect । विवरण के लिए यह उत्तर देखें।

यहां छवि विवरण दर्ज करें

आगे की पढाई

उपरोक्त उदाहरण ज्यादातर पहले लिंक से आता है।

  • आईपैड स्टाइल पॉपओवर्स ऑन आईफ़न ऑन स्विफ्ट
  • आईओएस 8 पॉपओवर प्रस्तुतियाँ
  • आईओएस 8 आईफोन पर यूआईपीओपरप्रदर्शन नियंत्रक
  • आईओएस में पॉपअप विकल्पों का सामान्य अवलोकन

आईफोन पर आप आमतौर पर ऐसे बटनों के ढेर के लिए एक यूआईएएसीएशेट का प्रयोग करेंगे। यह बटन के बगल में पॉप अप करने के बजाय, नीचे से ऊपर स्लाइड करता है, लेकिन यह iPhone पर मानक व्यवहार है

एक ऐसा है जो WEPopover से भी बेहतर है 50pixels नामक एक कंपनी द्वारा विकसित, इसे FPPopover कहा जाता है

आप https://github.com/50pixels/FPPopover पर FPPopover डाउनलोड कर सकते हैं

आपको मैन्युअल रूप से एक कस्टम पृष्ठभूमि छवि का उपयोग करके या पारदर्शिता के साथ चित्रण करने के लिए, कुछ UIButtons (या अन्य प्रकार के कस्टम व्यू) को शीर्ष पर जोड़ना होगा, और किसी भी तरह से उस दृश्य के बाहर सभी स्पर्श संभाल करना होगा

ध्यान दें कि यह गैर-मानक UI है एक कार्यपत्रक अधिक HIG अनुरूप होगा।

आप WYPopoverController देख सकते हैं: https://github.com/sammcewan/WYPopoverController

ऊपर दिए गए स्क्रीनशॉट एक यूआईएक्सशेट नहीं है। ऐसा लगता है कि कस्टम UIButtons के साथ एक साधारण UIView उपवर्ग के ऊपर यह शीर्ष पर है इसलिए आगे बढ़ो और अपनी आवश्यकताओं के अनुसार उपवर्ग बनाएं और फिर जब भी आपको इसकी ज़रूरत होती है तो इसे अपने दृश्य में एक सबव्यू के रूप में जोड़ें।

एक नेविगेशन नियंत्रक पर एक दाहिने ओर पट्टी बटन आइटम से एक popover प्राप्त करने के लिए जो कि टेबलव्यू नियंत्रक का हिस्सा है, निम्नलिखित स्विफ्ट 4 और Xcode 9 के लिए मेरे लिए काम किया

  1. ऊपर उत्तर के उत्तर में दिए गए चरणों का पालन करें (जैसा कि समुदाय द्वारा संपादित किया गया है।)
  2. उपरोक्त उत्तर में दिखाए गए अनुसार सेगू को लागू न करें। किसी कारण से, सीप्यू ने स्पष्ट आकार की स्थापना के बावजूद पॉपओवर को पूर्ण स्क्रीन पर जाने का कारण बनता है।
  3. अपने पॉपओवर व्यू नियंत्रक को एट्रिब्यूट इंस्पेक्टर में एक शीर्षक दें
  4. निम्न कोड को टेबलव्यू नियंत्रक में जोड़ें जहां पॉपअप दिखाएगा।
  5. स्ट्रिंग आइडेंटिफ़ायर संशोधित करें (यहां का एक कॉन्स्टेंट.swift फ़ाइल संदर्भित है)
  6. अपने पॉपओवर व्यू नियंत्रक के शीर्षक का उपयोग करने के लिए "के रूप में फ़िल्टर करें" को संशोधित करें

     /// Shows a filter popover view @IBAction func filterBtnPressed(_ sender: UIBarButtonItem) { let popover = storyboard?.instantiateViewController(withIdentifier: FILTER_VC) as! FilterVC popover.modalPresentationStyle = UIModalPresentationStyle.popover popover.popoverPresentationController?.backgroundColor = UIColor.green popover.popoverPresentationController?.delegate = self popover.popoverPresentationController?.backgroundColor = ColorPalette.Blue.Medium popover.popoverPresentationController?.sourceView = self.view popover.popoverPresentationController?.sourceRect = CGRect(x: self.view!.bounds.width, y: 0, width: 0, height: 0) popover.popoverPresentationController?.permittedArrowDirections = .up self.present(popover, animated: true) } } func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle { return UIModalPresentationStyle.none }