2016-04-24 6 views
7

अंतर्निहित फोटो एप्लिकेशन किसी छवि पर टैप करते समय नेविगेशन में/बाहर निकलता है। इस तरह फोटो ऐप इसे पूर्ण स्क्रीन देखने की अनुमति देता है।आईओएस 9 पर नेविगेशनबार में फीका कैसे करें?

यह कैसे करता है (फीका प्रभाव)?

जैसा कि मैं समझता हूं navigationController?.navigationBar.alpha अब और काम नहीं करता है (इसलिए आप इसे इस तरह से एनिमेट नहीं कर सकते हैं)।

+0

क्या 'UINavigationController setNavigationBarHidden के बारे में: एनिमेटेड:' विधि ? – rmaddy

+0

बीटीडब्ल्यू - मेरे पास एक ऐप है जो 'नेविगेशनबार' की 'अल्फा' संपत्ति को एनिमेट करता है और यह ठीक काम करता है। निश्चित नहीं है कि आप क्यों कहते हैं कि यह अब काम नहीं करता है। कोशिश करो। – rmaddy

+0

@rmaddy यह नेविगेशन बार दिखाता है और छुपाता है। हालांकि, यह विभिन्न एनीमेशन का उपयोग करता है। यह इसे ऊपर और नीचे स्लाइड करता है (बनाम इसे अंदर और बाहर लुप्त कर रहा है) –

उत्तर

5

मेरी सभी खोज साझा करना।

सच कहूं

पर मोड शिकायत, मैं आधा एक डमी है कि मैं एक अच्छा दिन लड़ने के लिए एप्पल app में मौजूदा सरल बात को लागू करने के लिए किया था की तरह नाराज महसूस /।

मोड बंद शिकायत

सबसे पहले यहां कुछ संदर्भ है। मैं नेविगेशनबार के साथ काम कर रहा हूं जो नेविगेशन कंट्रोलर द्वारा प्रदान किया जाता है (बनाम केवल स्टैंडअलोन बार जो आपके दृश्य में मैन्युअल रूप से गिराए जाते हैं)

मुझे कई दृष्टिकोण मिलते हैं। मैं उन सभी को उल्लेख होगा

1) navigationBar के अल्फा के परिवर्तन एनिमेट

UIView.animateWithDuration(0.1, animations: { 
    navigationController?.navigationBar.alpha = 0 
}, completion: nil) 

@rmaddy उल्लेख यहाँ है कि यह उसके लिए काम करता है (भले ही मेरे पास कोई उन्हें प्रयोग सफलता मिली)। हालांकि, मेरा मानना ​​है कि उसके पास एक स्टैंडअलोन बार है (नेविगेशन नियंत्रक द्वारा प्रबंधित एक बार बनाम)।

मैंने यूआई पदानुक्रम की जांच करने के लिए एक उपकरण Reveal का उपयोग किया और कुछ चीजें पाईं। - एक नेविगेशनबार है जो छुपा हुआ है (और navigationController?.navigationBar इसका संदर्भ दे रहा है)। तो आप अल्फा को अपने दिल की खुशी में बदल सकते हैं, लेकिन ये परिवर्तन दिखाई नहीं देंगे।

हालांकि एक और नेविगेशनबार है। मुझे लगता है कि नेविगेशन नियंत्रक के कुछ निजी सदस्यों में इसका संदर्भ दिया गया है (चलिए इसे निजी नेविगेशनबार कहते हैं)। यह दृश्यमान है और यह आपके दृश्य के शीर्ष पर प्रदर्शित होता है।

2) का प्रयोग करें setNavigationBarHidden: एनिमेटेड:

यह एक मानक तरीका छिपाना/दिखाना नेविगेशन पट्टी है। यह एनिमेटेड अलग तरीका है (यह स्लाइड/ऊपर और नीचे)। हालांकि, अगर यह आपके लिए ठीक है, तो बस इसके साथ जाओ, क्योंकि यह सरल और साफ है।

navigationController?.setNavigationBarHidden(true, animated: true) 

साथ ही आप इसे UIView.beginAnimations में लपेट कर सकते हैं, UIView.commitAnimations यह एक साथ चेतन करने के लिए कुछ अन्य सामान के साथ (यह चिकनी बनाने के लिए)

3) निजी नेविगेशन पट्टी के अल्फा के परिवर्तन एनिमेट करें।

यह मेरे लिए काम किया:

let privateNavigationBar = self.superview?.superview?.superview?.superview?.superview?.superview?.subviews[1] 
UIView.animateWithDuration(0.1, animations: { 
     privateNavigationBar.alpha = 0 
    }, completion: nil) 

मैं एक दृश्य जो निजी navigationBar (जो उस दृश्य के लिए दूसरा subview है) शामिल हैं पाने के लिए पदानुक्रम के माध्यम से तरह से ऊपर जा रहा हूँ।

  • मेरा मानना ​​है कि # superviews की:

    हालांकि, इस पद्धति कई कमियां है? आपके ऐप पदानुक्रम पर निर्भर करता है (बनाम आप विभाजित दृश्य का उपयोग कर रहे हैं और इसी तरह)। मुझे लगता है कि आप इसे हल करने के लिए गैर छिपे हुए UINavigationBar को खोजने के लिए सामान्य पदानुक्रम चला सकते हैं या हो सकता है।

  • मुझे लगता है कि एप्पल इस पर भ्रूभंग सकता है (अपने अनुप्रयोग AppStore करने के लिए स्वीकार नहीं किया)

4) navigationBar पारदर्शी बनाने और सेट पृष्ठभूमि छवि पारदर्शी होना और उस पर अल्फ़ा चैनल बदलना होगा।

मुझे नहीं पता कि मैं इस विचार के बारे में कहां पढ़ता हूं। कुछ उल्लेख किया गया था।

Apple example app है जो दिखाता है कि नेविगेशनबार को कैसे अनुकूलित किया जाए, जिसमें इसे पारदर्शी बनाना शामिल है।

यह दिलचस्प है कि यह उदाहरण ऐप मेरे लिए काम करता है (नेविगेशन बार इसमें पारदर्शी है)। हालांकि, जब मैंने अपने ऐप में इस कोड को आजमाया तो यह काम नहीं किया (मुझे अभी भी पता नहीं चला कि इसके साथ क्या चल रहा है)। हमेशा की तरह चर का गुच्छा (Info.plist में कुछ हो सकता है, वे भी navigationController उपवर्ग, भी दृश्य पदानुक्रम में कुछ हो सकता है) देखते हैं

5) जोड़ा जा रहा है स्टैंडअलोन navigationBar

आप एक बार प्रदान की छिपा कर सकते हैं नेविगेशन नियंत्रक द्वारा। UIView में अपना स्वयं का जोड़ें, इसे @IBOutlet पर तार दें और उस पर अल्फा एनीमेशन का उपयोग करें (संभवतः यही है कि @rmaddy भी रेफर कर रहा था)।

मैंने चेक किया और यह काम है।

यह दृष्टिकोण this ट्यूटोरियल में उपयोग किया जाता है।

  • मेरा मानना ​​है कि यह अच्छी तरह से रोटेशन, स्थिति बार ऊंचाई की वृद्धि को संभाल नहीं होगा, जबकि कॉल या जीपीएस

हर बार जब मैं इस तरह के कोड देखें:

हालांकि, यह एक नकारात्मक पक्ष यह है (लेख में लिखा गया) मुझे पता है कि आकार बदलने में समस्याएं होगी: CGRectMake(0, 0, CGRectGetWidth(self.view.bounds), 64.0)

आप संभावित रूप से इसे बाधाओं से प्रतिस्थापित कर सकते हैं। मैं इस मार्ग पर गया, लेकिन कुछ मुद्दों पर ठोकर खाई।

6) अन्य तरीकों

मैं दो और तरीकों को देखा। मैं नहीं जानता कि क्या वे काम करेंगे या क्या कमियां हो जाएगा:

इस सवाल में उनमें से एक: How to hide/show status bar and navigation bar by fading in/out at the same time like the Photos app in iOS 7?

और यह जवाब: https://stackoverflow.com/a/18063898/422080

संबंधित मुद्दे