मैं UIImageView घूर्णन के लिए CABasicAnimation का उपयोग कर रहा हूं और मैं रोके गए एनीमेशन को फिर से शुरू करने में असमर्थ हूं। एनीमेशन viewDidLoad विधि में शुरू होता है:CABasicAnimation को रोकने/फिर से शुरू करने के लिए समाधान कैसे प्राप्त करें?
UIImageView *img = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"MyImage.png"]];
self.myImage = img;
[self.view addSubview:img];
[img release];
CABasicAnimation *fullRotation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
fullRotation.fromValue = [NSNumber numberWithFloat:0];
fullRotation.toValue = [NSNumber numberWithFloat:((360*M_PI)/180)];
fullRotation.duration = 10;
fullRotation.repeatCount = LARGE_VAL;
[img.layer addAnimation:fullRotation forKey:@"360"];
मैं बिना रुके repeatable एनीमेशन है कि जब दृश्य स्क्रीन पर दिखाई देता शुरू की आवश्यकता है। तो मैंने इस पोस्ट को पढ़ा है (here) और कार्यान्वित समाधान ने परत एनीमेशन को रोकने और फिर से शुरू करने के लिए अपना सेब (solution) प्रदान किया। तो, मैं इन तरीकों का इस्तेमाल किया है:
-(void)pauseLayer:(CALayer*)layer{
CFTimeInterval pausedTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil];
layer.speed = 0.0;
layer.timeOffset = pausedTime;
}
-(void)resumeLayer:(CALayer*)layer{
CFTimeInterval pausedTime = [layer timeOffset];
layer.speed = 1.0;
layer.timeOffset = 0.0;
layer.beginTime = 0.0;
CFTimeInterval timeSincePause = [layer convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime;
layer.beginTime = timeSincePause;
}
और मैं का उपयोग कर और myImage संपत्ति की परत गुजर viewWillAppear और viewWillDisappear करने के लिए इन तरीकों को शामिल किया है:
-(void)viewWillDisappear:(BOOL)animated{
[self pauseLayer:self.myImage.layer];
}
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self resumeLayer:self.myImage.layer];
}
छवि जब दृश्य चला जाता है प्रारंभिक रोटेशन है स्क्रीन पर। लेकिन फिर मैं स्क्रीन पर कुछ UIViewController डाल रहा हूं, फिर छवि रोटेशन के साथ दृश्य पर वापस जा रहा हूं। समस्या स्क्रीन पर दिखाई देने पर छवि का घूर्णन फिर से शुरू नहीं होता है। मैंने जांच की है: मेरी छवि UIImageView प्रॉपर्टी शून्य नहीं है, दोनों दृश्य देखें और देखें WillAppear विधियों को लागू किया जाता है। लेकिन एनीमेशन फिर से शुरू नहीं हो रहा है। क्या मैंने कुछ गलत किया, या कुछ याद किया?
मैंने अपनी छवि दृश्य वस्तु संपत्ति (दोनों दृश्य और इसकी परत) के भौतिक पते की जांच की है और दृश्य WillAppear और viewWillDisappear दर्ज करते समय पते समान हैं। छवि ऑब्जेक्ट रिलीज़ नहीं होता है, क्योंकि मैंने जांच की है कि यह शून्य – Centurion
नहीं है IImage संपत्ति में nonatomic है और गुण बनाए रखें। इसलिए प्रारंभिक self.myImage = img असाइनमेंट के बाद छवि ऑब्जेक्ट को बनाए रखा जाता है। – Centurion
चल रहा है [self.view addSubview: self.myImage] नीचे समस्या को हल नहीं करता है, एनीमेशन अभी भी वापस आने के बाद फिर से शुरू नहीं होता है। – Centurion