2016-09-15 17 views
8

मैं एक्सकोड 8.0/आईओएस 10 में अपग्रेड किया गया और अब मेरे नेविगेशन बार का कलर चेंज एनीमेशन अब काम नहीं कर रहा है, यह बिना किसी एनीमेशन के सीधे रंग बदलता है।एनीमेशन नेविगेशन बार बार आईओएस 10 में टिनंटकॉलर परिवर्तन

UIView.animateWithDuration(0.2, animations: { 
    self.navigationController?.navigationBar.barTintColor = currentSection.color! 
}) 

कोई भी इसे ठीक करने के बारे में जानता है?

उत्तर

15

नेविगेशन को एनिमेट करने के लिए आईओएस 10 में रंग का रंग परिवर्तन आपको एनीमेशन ब्लॉक के अंदर रंग सेट करने के बाद layoutIfNeeded पर कॉल करने की आवश्यकता है।

उदाहरण कोड:

UIView.animateWithDuration(0.5) { 
    self.navigationController?.navigationBar.barTintColor = UIColor.redColor() 
    self.navigationController?.navigationBar.layoutIfNeeded() 
} 

इसके अलावा, मैं सूचित करना है कि barTintColor की तरह इस तरह के गुण में एप्पल doesn’t officialy support एनिमेशन, ताकि विधि किसी भी समय भंग कर सकते हैं।

आप एनीमेशन ब्लॉक के दौरान नेविगेशन पट्टी पर -layoutIfNeeded फोन यदि यह इसकी पृष्ठभूमि गुण अद्यतन करना चाहिए, लेकिन क्या इन गुणों कर की प्रकृति को देखते हुए, वहाँ वास्तव में नहीं कभी गारंटी के किसी भी प्रकार किया गया है कि आप उनमें से किसी को एनिमेट कर सकते हैं।

+0

यह वास्तव में काम करता है, लेकिन मेरे नेविगेशन पट्टी का शीर्षक भी (नेविगेशन पट्टी जब के केंद्र के लिए एनिमेट है मैं "animateWithDuration" समारोह में शीर्षक सेट नहीं है। शीर्ष बाएं से शीर्षक चाल रंग परिवर्तन एनिमेटिंग है ... – Tiois

+0

@Tiois, मुझे लगता है कि समस्या केवल आपके प्रोजेक्ट में है। संभव है कि आप एक ही लेआउट चक्र में शीर्षक सेट करें, अपने व्यू कंट्रोलर में बदलते सभी गुणों की जांच करें। मैंने टेस्ट प्रोजेक्ट बनाया है और शीर्षक जगह पर रहता है , आप इसे यहां देख सकते हैं: https://dl.dropboxusercontent.com/u/42855950/test.zip – Vasily

+0

शीर्षक स्थापित करने के बाद आप सही थे, अब मैं नेविगेशन पर लेआउट IfNeeded() को कॉल करता हूं और फिर मैं UIView को कॉल करता हूं लेआउट के साथ .animateWithDuration फ़ंक्शन IFNeeded() और यह ठीक काम कर रहा है! धन्यवाद। – Tiois

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