2009-03-06 10 views
11

मैं एक छवि को स्केल करने की कोशिश कर रहा हूं, छवि को बदल सकता हूं, फिर इसे वापस स्केल कर सकता हूं।मैं आईफोन UIImageView के साथ चेन स्केल एनिमेशन कैसे करूं?

CABasicAnimation* shrink = [CABasicAnimation animationWithKeyPath:@"transform.scale"]; 
shrink.toValue = [NSNumber numberWithDouble:0]; 
shrink.duration = 1; 
    shrink.delegate = self; 
    [myImageView.layer addAnimation:shrink forKey:@"shrink"]; 

छोटा बना देता है, तो इसके पूर्ण होने पर, मैं छवि बदलने के लिए, और बढ़ने शुरू:

- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag 
{ 
    myImageView.image = [images objectAtIndex:image]; 
CABasicAnimation* grow = [CABasicAnimation animationWithKeyPath:@"transform.scale"]; 
grow.toValue = CGAffineTransformMakeScale(1,1); 
    grow.delegate = self; 
grow.duration = 1; 
[myImageView.layer addAnimation:grow forKey:@"grow"]; 
} 

इस सिम्युलेटर पर अच्छा काम करता है, लेकिन डिवाइस पर, जब छोटा पूरा करता है, मुझे पूर्ण आकार, पुरानी छवि का एक फ्लैश मिलता है, फिर बढ़ती एनीमेशन नई छवि के साथ शुरू होता है।

कोई विचार कि फ्लैश से कैसे छुटकारा पाना है?

(मैं कोशिश की है "removedOnCompletion = नहीं," और प्रयास किया affineTransform पहले पूरा होने के बाद आकार को छोटा किया के बराबर निर्धारित करने, लेकिन बहुत किस्मत नहीं था।)

सराहना की किसी भी सुझाव।

केबी

संपादित करें:

बहुत बढ़िया! निम्नलिखित सेट करना:

shrink.fillMode = kCAFillModeForwards; 
shrink.removedOnCompletion = NO; 

चमकती हटा दी गई। धन्यवाद, बेन!

उत्तर

13

अपनी एनीमेशन के fillMode को kCAFillModeForwards पर सेट करने का प्रयास करें। इससे वस्तु को छोड़ना चाहिए क्योंकि यह पहले की बजाय एनीमेशन के अंत में था।

+0

उत्कृष्ट! निम्नलिखित सेट करना: \t out.fillMode = kCAFillModeForwards; \t out.removedOnCompletion = नहीं; चमकती हटा दी गई। धन्यवाद, बेन! – KevinButler

0

मुझे एक ही समस्या है जब मैंने एनीमेशनडिडटॉप विधि में एक और CAAnimation बनाने की कोशिश की। मैं CAKeyframe एनीमेशन का उपयोग करने का सुझाव देते हैं।