2015-07-07 11 views
9

मैं UIBarButtonItems को देखते हुए, एक अर्ध पारदर्शी से एक पारदर्शी UINavigationBar में आईओएस संगीत ऐप पुश/पॉप संक्रमण की प्रतिलिपि बनाने की कोशिश कर रहा हूं। चूंकि नेविगेशन बार स्वयं को स्थानांतरित नहीं करता है, मेरा मानना ​​है कि आपको UIViewControllers दोनों के लिए UINavigationBar पारदर्शी सेट करने और अर्ध पारदर्शी UINavigationBar अनुकरण करने के लिए पारदर्शी UINavigationBar के तहत UIViewController में एक सबव्यूव जोड़ने की आवश्यकता है। इस मुद्दे के लिए कोई समाधान?पारदर्शी UINavigationBar (ऐप्पल संगीत जैसे नेविगेशन बार) में संक्रमण

iOS Music app transition

+0

efremidze शब्दों में कहें, कैसे आप को पूरा करने अंत था पर इस? – SAHM

+0

मैं इस लाइब्रेरी का उपयोग कर रहा हूं: https://github.com/MoZhouqi/KMNavigationBarTransition – efremidze

उत्तर

8
+3

एक और समाधान: https://blog.austinchou.com/apple-music-like-navigation-bar/ – avdyushin

+0

@avdyushin धन्यवाद, महान लिंक! – efremidze

+0

असल में यह libs Google संगीत में लागू के समान नहीं है ... –

4

आपके विवरण नियंत्रक इस कोड

override func viewWillAppear(animated: Bool) { 
    super.viewWillAppear(animated) 

    guard self.navigationController?.topViewController === self else {return} 

    self.transitionCoordinator()?.animateAlongsideTransition({ [weak self](context) in 
     self?.navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default) 
     self?.navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default) 

     }, completion: { context in 
    }) 
} 

override func viewWillDisappear(animated: Bool) { 
    super.viewWillDisappear(animated) 

    guard self.navigationController?.topViewController === self else {return} 

    self.transitionCoordinator()?.animateAlongsideTransition({ [weak self](context) in 
     self?.navigationController?.navigationBar.setBackgroundImage(nil, forBarMetrics: UIBarMetrics.Default) 
     self?.navigationController?.navigationBar.setBackgroundImage(nil, forBarMetrics: .Default) 
     }, completion: { context in 
    }) 
} 
+0

यह लगभग सही है, दो 'सेटबैकग्राउंड इमेज' फ़ंक्शन कॉल की बजाय किसी को 'छाया छवि' संपत्ति होना चाहिए जिसमें मैंने इसे शून्य के बजाय एक नए 'UIImage() 'पर सेट किया है। इसके अलावा, गार्ड बयान मेरे लिए जरूरी नहीं लगता है, यह सुनिश्चित नहीं है कि इससे कोई फर्क पड़ता है –

+1

ध्यान दें कि इसके लिए काम करने के लिए, आपके प्रस्तुत दृश्य नियंत्रक पर 'edgesForExtendedLayout' प्रॉपर्टी में शीर्ष किनारे (यानी किनारे) शामिल नहीं होना चाहिए नेविगेशन बार के अनुरूप)। अन्यथा, संक्रमण के दौरान पारदर्शी होने पर आपकी विस्तारित सामग्री नेविगेशन बार के माध्यम से दिखाई देगी। यदि कोई तालिका दृश्य या संग्रह दृश्य का उपयोग कर रहा है, तो ऐसा होने से पहले आपको नीचे स्क्रॉल करने की आवश्यकता हो सकती है। 'EdgesForExtendedLayout' रखने के लिए, आपको प्लेसहोल्डर नेविगेशन बार बनाने की आवश्यकता है या [TFTransparentNavigationBar] जैसे समाधान का प्रयास करें (https://github.com/thefuntasty/TFTransparentNavigationBar)। – jamesk

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