मैं अपने नेविगेशन बार के आरएचएस पर दो बटनों के बीच स्वैप करने के लिए अपने कोड में -(void)setEditing:(BOOL)editing animated:(BOOL)animated
विधि को कॉल कर रहा हूं।UINavigationBar में एक बटन परिवर्तन को एनिमेट कैसे करें?
-(void)setEditing:(BOOL)editing animated:(BOOL)animated {
[super setEditing:editing animated:animated];
// Toggle ‘+’ and ‘Add To Order’ button.
if(editing) {
self.navigationItem.rightBarButtonItem = self.addItemButton;
}
else {
self.navigationItem.rightBarButtonItem = self.addToOrderButton;
}
}
कहाँ self.addItemButton
और self.addToOrderButton
awakefromNib
में पूर्वनिर्धारित UIBarButtonItems, सेटअप युक्त ivars हैं।
self.addToOrderButton
में बटन काफी व्यापक तो self.addItemButton
में से एक है, इसलिए मैं उनके लिए करना चाहते हैं दो चौड़ाई के बीच एक सूक्ष्म एनीमेशन होने के लिए जब संपादन राज्य में परिवर्तन शुरू हो रहा है (के एलएचएस पर एक मानक editButtonItem
दोहन से नेविगेशन।
अगर मैं चारों ओर [UIView beginAnimations:nil context:NULL];
और [UIView commitAnimations];
बटन परिवर्तन चेतन है, लेकिन उनके स्थान पर की तुलना में से ऊपरी बाएं बल्कि अलग-अलग जगह में पदों उड़ान और सिर्फ अपने चौड़ाई एनिमेट साथ साथ पूरे if:else
।
मैं नेविगेशन बार तत्व को कैसे एनिमेट करता हूं एस ताकि प्रत्येक व्यक्ति एक (आरएचएस बटन, शीर्षक) अधिक उचित, संयम तरीकों से एनिमेट हो?
[self.navigationItem setRightBarButtonItem: self.addToOrderButton animated:YES];
... जो यह तुम्हारे लिए चेतन जाएगा:
मैंने जवाब स्वीकार कर लिया है, जैसा कि मैंने जवाब स्वीकार कर लिया है यह वही करता है जो आप वर्णन करते हैं और ठीक काम करता है। बहुत धन्यवाद। एक तरफ, क्या वास्तविक एनीमेशन को ट्विक करने का कोई तरीका है? जैसा कि यहां प्रस्तुत किया गया है, यह एक क्रॉस-फीड-जो ठीक है-लेकिन टेक्स्ट के लिए क्रॉस-फीड का संयोजन और 'फ्रेम' के लिए बटन एलएचएस के एनिमेटेड मूव का संयोजन बेहतर होगा। – creednmd
एसडीके में कोई सीधी विधि नहीं है, नहीं। आप शायद कुछ खुद को लागू कर सकते हैं, लेकिन यह गैर-तुच्छ (कुछ श्रेणी के साथ विधि को ओवरराइड करने और इसे अपने स्वयं के संक्रमण से बदलना) जैसा होगा। – lxt
ऐसा लगता है कि मुझे दस्तावेज़ों का अध्ययन करने की आवश्यकता होगी; हालांकि मुझे सही रास्ते पर लाने के लिए धन्यवाद। – creednmd