2012-11-05 19 views
15

यहाँ मैंने पाया है कि कैसे अब पदावनत beginAnimations:context: पद्धति का उपयोग करके UIButton के शीर्षक परिवर्तन चेतन करने के लिए:चेतन UIButton के शीर्षक परिवर्तन

UIBUtton title animation for iPhone

कैसे एक ही बात वर्तमान API का उपयोग करके करना है?

अद्यतन:

मैं ब्लॉक आधारित एनिमेशन का उपयोग करने की कोशिश की है:

NSTimeInterval animationDuration = animated ? 1.f : 0.f; 
[UIView animateWithDuration:animationDuration delay:0.f options:UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionAllowUserInteraction animations:^{ 
    [button setTitle:newTitle forState:UIControlStateNormal]; 
    [button setTitleColor:newTitleColor forState:UIControlStateNormal]; 
} completion:nil]; 

रंग बदलने एनिमेटेड नहीं है।

+0

प्रलेखन की जांच करें, टीटी सभी UIView संदर्भ में विस्तार से बताया है: http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview /uiview.html 'प्रारंभएनीकरण: संदर्भ:' प्रतिस्थापन के स्पष्ट स्पष्टीकरण के साथ। –

उत्तर

44

उपयोग ब्लॉक:

[UIView transitionWithView:self.flipLabelButton duration:1 options:UIViewAnimationOptionTransitionFlipFromRight animations:^{ 

    [self.flipLabelButton setTitle:newText forState:UIControlStateNormal]; 

} completion:nil]; 
+0

और यही वह है? मैंने सोचा कि केवल उन्हीं गुण जिन्हें "एनिमेटेबल" के रूप में दस्तावेज किया गया है, इस तरह एनिमेटेड हो सकते हैं। या नहीं? –

+0

यदि आप एनिमेट फ़ंक्शंस का उपयोग कर रहे थे, लेकिन संक्रमण फ़ंक्शन सब कुछ के लिए काम करते हैं क्योंकि यह पूरे दृश्य पर लागू होता है। – jjv360

+0

मैंने अपना प्रश्न अपडेट कर लिया है। यह अभी भी एनिमेट नहीं करता है। कोई विचार? –

5

AnimationGroups के अलावा,, एनिमेशन के आम तौर पर दो प्रकार के होते हैं एक, संपत्ति एनीमेशन के लिए है अन्य अपनी सामग्री, संक्रमण या कुछ भी है कि संपत्ति का उपयोग नहीं कर सकते हैं की तरह कुछ एनिमेट के लिए है एनीमेशन करने के लिए। तो दूसरा समाधान अपनी पसंद है, और आप दो तरीकों से हासिल कर सकते हैं: उपयोग CATransition:

CATransition *transition = [CATransition animation]; 
transition.type = kCATransitionFade; 
transition.duration = 1; 
[button.layer addAnimation:transition forKey:kCATransition]; 
[button setTitle:newTitle forState:UIControlStateNormal]; 
[button setTitleColor:newColor forState:UIControlStateNormal]; 

अन्य तरीके से एक UIKit ब्लॉक उपयोग कर रहा है के रूप में @ jjv360 कहा, लेकिन आप रंग चेतन नहीं कर सकते इसके अंदर क्योंकि स्पष्ट रूप से रंग फिसल नहीं जा सकता है।

8

स्विफ्ट 3

UIView.transition(with: button, duration: 0.5, options: .transitionCrossDissolve, animations: { 
    self.button.setTitle("WOW, new title", for: .normal) 
    self.button.setTitleColor(UIColor.red, for: .normal) 
}, completion: nil)