2013-01-02 31 views
15

मुझे ऐप शुरू करने पर फ़्लिपबोर्ड मामूली फ़्लिपिंग एनीमेशन के उद्देश्य से कुछ ऐसा ही चाहिए। लॉन्च होने पर फ़्लिपबोर्ड में इंटरफ़ेस से अपरिचित उपयोगकर्ताओं को दिखाने के लिए ऊपर और नीचे की थोड़ी सी फ्लिपिंग होती है, जो कि यह फ़्लिप करने योग्य है।एनीमेशन UIScrollView एनीमेशन के बाद एनीमेशन

मेरे पास एक UIScrollView है, मैं उपयोगकर्ता को दिखाने के लिए थोड़ा सा एनिमेट करना चाहता हूं कि यह स्क्रॉल करने योग्य है। तो मैं थोड़ा और पीछे दाईं ओर स्क्रॉल करना चाहता हूं। UIScrollView में पूर्णता खंड के बिना setContentOffset:animated: संदेश है। मुझे लगता है कि इसे दो बार कॉल करने के परिणामस्वरूप कोई एनीमेशन नहीं होता है। अगर मैं उत्तराधिकार में एनीमेशन के बाद एनीमेशन चाहता हूं तो क्या होगा?

संपादित करें: उत्तर के लिए धन्यवाद लेवी। और रिकॉर्ड के लिए, UIViewAnimationOptionAutoreverse और UIViewAnimationOptionRepeat है जिसका उपयोग मैं कर सकता हूं। तो यही वह है जो मैंने उन कार्यों के साथ समाप्त किया।

CGPoint offset = self.scrollView.contentOffset; 
CGPoint newOffset = CGPointMake(offset.x+100, offset.y); 

[UIView animateWithDuration:0.5 delay:0 options:UIViewAnimationOptionCurveEaseIn | UIViewAnimationOptionAutoreverse |UIViewAnimationOptionRepeat animations:^{ 
    [UIView setAnimationRepeatCount: 2]; 
    [self.scrollView setContentOffset:newOffset animated: NO]; 
} completion:^(BOOL finished) { 
    [self.scrollView setContentOffset:offset animated:NO]; 
}]; 

उत्तर

19

दो विकल्प:

1) -(void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView प्रतिनिधि कॉलबैक

2) (एक एनीमेशन ब्लॉक में डाल करने के लिए ... animated:NO]; साथ प्रयास करें) है, जो पूरा होने हिस्सा है का उपयोग करें।

[self.collectionView setContentOffset:CGPointMake(self.collectionView.contentOffset.x+260.0, 
                self.collectionView.contentOffset.y) 
          animated:YES]; 

तो आप वापस एक मिल जाएगा:

-(void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView 

जब स्क्रॉल खत्म

+0

ग्रेट जो काम करता है, धन्यवाद। :) – huggie

+0

यह काम करता है लेकिन एनीमेशन मेरे द्वारा प्रदान की गई अवधि का उपयोग नहीं कर रहा है। यह अपना डिफ़ॉल्ट समय ले रहा है। – Developer

30

एक scrollview, tableView या collectionView के लिए अगर आप कुछ इस तरह से करते हैं।

यदि उपयोगकर्ता दृश्य को स्थानांतरित करता है तो आपको यह कॉलबैक नहीं मिलता है।

+3

यह सबसे सही उत्तर है – Lolloz89

+0

यह (महान) उत्तर केवल तभी मान्य होता है जब सभी सेटकंटेंट ऑफसेट कॉल एक ही फ़ंक्शन पर ले जाएं। यदि, उदाहरण के लिए, सेटकंटेंट ऑफसेट के लिए केवल कुछ कॉल के लिए 'समापन' की आवश्यकता होती है, तो आपको इसे प्राप्त करने के लिए कुछ कोड एक्रोबेटिक्स की आवश्यकता होगी। –

+4

इसके अलावा, अगर कोई एनीमेशन नहीं है (उदा। स्क्रॉल ऑफसेट 0 है), scrollViewDidEndScrollingAnimation को नहीं कहा जाता है। –

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