2017-01-20 17 views
6

पर जाता है मैं आईओएस 10 में संपर्क ऐप की एक ही एनीमेशन के साथ एक व्यू कंट्रोलर बनाना चाहता हूं। जब आप पृष्ठ को स्क्रॉल करते हैं तो संपर्क की तस्वीर नेविगेशन बार के बीच में जाती है।आईओएस 10 संपर्क फोटो नेविगेशन बार

आईओएस 10 में एक एपीआई है या एक कस्टम कार्यान्वयन है?

उत्तर

2

नेविगेशन बार अदृश्य बनाने के लिए एक चाल हो सकती है। स्टोरीबोर्ड सेट में सिम्युलेटेड मेट्रिक्स सेट करें -> शीर्ष बार = कोई नहीं (आप इसे किसी भी तरह से भी बचा सकते हैं)।

enter image description here

आपके विचार नियंत्रक में viewDidLoad में जोड़ें:

स्विफ्ट 3,0

navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default) 
    navigationController?.navigationBar.shadowImage = UIImage() 
    navigationController?.navigationBar.isTranslucent = true 

ऑब्जेक्टिव-सी

[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; 
    self.navigationController.navigationBar.shadowImage = [UIImage new]; 
    self.navigationController.navigationBar.translucent = YES; 

तो फिर तुम एक एनीमेशन बनाना चाहिए जब फिसलने संपर्क के विवरण के साथ uitableview/uiscrollview और यहाँ यह है कि आप क्या करना चाहते हैं पर निर्भर करता है ...

संपादित करें: यहाँ आप सिम्युलेटर पर एक उदाहरण मिल सकते हैं ... बदसूरत mockup के लिए खेद है: डी enter image description here

3

रिसर्च

Navbar को संशोधित करने की कोशिश कर रहे कई तकनीकें हैं। मैं एक के बाद एक कोशिश कर रहा द्वारा घंटे का एक बहुत खर्च किया है:

  1. एप्पल के आधिकारिक ट्यूटोरियल https://developer.apple.com/library/content/samplecode/NavBar/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007418-Intro-DontLinkElementID_2 जो केवल नेत्रहीन नेवबार फैली हुई है। वास्तव में, बार के नीचे दूसरा देखें और की तरह लगने वाले रंगों और रेखाओं को सेट करें, दूसरा दृश्य बार का हिस्सा है। लेकिन यह नहीं है।
  2. Levelmoney कस्टम नेवबार के लिए अच्छा lib बनाया: https://github.com/Levelmoney/resizable-navigation-bar
  3. एक अन्य समाधान आपके विचार, जो नेवबार तरह दिखेगा (एप्पल के उदाहरण की तरह रंग और छाया वापस का उपयोग करें) बनाते हैं, और इसे इस तरह नेवबार में लाना है : self.navigationController!.navigationBar.addSubview(self.titleView!) हालांकि यह बहुत अच्छा लग रहा है, यह navbar तत्वों को छुपाता है और बैक बटन क्लिक पर प्रतिक्रिया नहीं देता है। मैं इस काम की घटना नहीं कर सका, मैंने अलग-अलग परतों की कोशिश की या सामने/पीछे विचार लाया।

    1. अपने स्वयं के कस्टम (XIB) दृश्य बनाएँ जो दिखाई देता है:

    संकल्प

    तो, मेरी राय, सबसे अच्छा समाधान (लेकिन स्पष्ट एक) द्वारा करने के लिए है Navbar खुद - विकल्प 3 की तरह। ऊपर। बैक बटन के अपने कार्यान्वयन को शामिल करें और इसी तरह।

  4. मूल navbar छुपाएं: self.navigationController!.isNavigationBarHidden = trueviewWillAppear(_ animated: Bool) में। इसे viewWillDisappear(_ animated: Bool)
  5. पर वापस लाने के लिए मत भूलना स्क्रीन के शीर्ष पर अपना स्वयं का दृश्य रखें। शीर्ष लेआउट गाइड के नीचे नहीं, लेकिन वास्तव में स्क्रीन के शीर्ष पर।आपका व्यू विला स्टेटस बार के नीचे है। स्टेटस बार के अंतर्गत सामग्री को फिट करने के लिए अपने दृश्य के शीर्ष मार्जिन का उपयोग करें।
  6. एनीमेशन लागू की तरह वे कहते हैं UITableView Scroll event

में यह समाधान आप को बनाए रखने की आवश्यकता है अपने खुद के "नेवबार" देशी एक की तरह एक ही देखने के लिए। फिर भी, navbar संशोधन के विपरीत, यह शायद आईओएस के भविष्य के संस्करणों में काम करेगा।

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