2011-08-26 35 views
26

मेरे पास UIImageViewsUIScrollView के भीतर हैं जो मैं विग्लॉग करना चाहता हूं जब उपयोगकर्ता उनमें से एक को दबाएगा। तो जब आप अपने आईपैड/आईफोन मेनू में एक आइकन को लंबे समय से दबाते हैं तो आपको उस व्यवहार के समान मिलता है।UIView एनीमेशन को कैसे रोकें

- (void)startWiggling { 

    for (UIImageView *touchView in [scrollView subviews]) { 

     [UIView beginAnimations:@"wiggle" context:nil]; 
     [UIView setAnimationDuration:0.1]; 
     [UIView setAnimationRepeatAutoreverses:YES]; 
     [UIView setAnimationRepeatCount:FLT_MAX]; 

     //wiggle 1 degree both sides 
     touchView.transform = CGAffineTransformMakeRotation(); 
     touchView.transform = CGAffineTransformMakeRotation(-0.0174532925); 

     [UIView commitAnimations]; 

    }  

} 

- (void)stopWiggling { 
    NSLog(@"Stop wiggling");  
} 

यह ठीक काम करता है:

तो मैं निम्नलिखित है। मुद्दा यह है कि ... मैं इसे कैसे रोक सकता हूं उपयोगकर्ता ने बटन दबाए जाने के बाद wiggling? मेरे पास एक बटन है और इसे कनेक्ट किया गया है और यह stopWiggling विधि तक पहुंच रहा है, तो यह ठीक है। लेकिन इसलिए ...

  1. मैं इन UIImageViews से UIView एनीमेशन को कैसे हटा सकता हूं?
  2. क्या मैं इस डिवाइस को अपने डिवाइस पर घर बटन दबाकर उपयोगकर्ता को जोड़ सकता हूं?
+0

सुनिश्चित नहीं हैं कि पहली बिट जवाब देने के लिए लेकिन होम बटन दबाने होम स्क्रीन पर अनुप्रयोग की समाप्ति का कारण होगा। उस कुंजी को बांधने का कोई तरीका नहीं है क्योंकि यह सिस्टम –

+0

@ सुहैल पटेल द्वारा मुझे पता है, लेकिन मैंने सोचा कि 'applicationDidEnterBackground' विधि को ओवरराइड करने का तरीका हो सकता है और यह जांच सकता है कि छवियां विग्लिंग कर रही हैं या नहीं। और यदि ऐसा है, तो विग्लॉग को रोकें और एप्लिकेशन को पृष्ठभूमि मोड में प्रवेश करने से रद्द करें। लेकिन मुझे नहीं पता कि यह संभव है या नहीं। – Jules

+0

आप इसे पृष्ठभूमि में जाने से नहीं रोक सकते हैं लेकिन आप उस विधि में wiggling को रोक सकते हैं। यह आपको एक विकल्प नहीं देता है ... –

उत्तर

70
#import <QuartzCore/QuartzCore.h> 

तो

[myView.layer removeAllAnimations]; 

या

[self.view.layer removeAllAnimations]; 
+1

आप सही हैं। मैं 'removeAllAnimations' विधि के बारे में जानता था, लेकिन मैंने कोशिश करने की भी परेशानी नहीं की क्योंकि मैंने एनीमेशन को दृश्य की परत पर नहीं रखा बल्कि दृश्य पर ही रखा। लेकिन आश्चर्य की बात यह काम किया .. =/ – Jules

+1

इतना छोटा, बहुत उपयोगी! – pmk

+0

इसके साथ समस्या यह है कि यदि आप एक ही परत पर एनिमेशन को फिर से शुरू करना चाहते हैं, तो यह फिर से काम नहीं करेगा क्योंकि परत से सभी एनिमेशन हटा दिए गए हैं। –

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