2011-02-07 4 views
6

मैं एक यूआईएसक्रॉल व्यू का उपयोग ऐसे घटक के आधार के रूप में कर रहा हूं जो कोर एनीमेशन का उपयोग करता है। जब उपयोगकर्ता दृश्य को स्वाइप करता है तो मैं स्क्रॉल व्यू के गंतव्य (विश्राम) स्थिति के अनुसार तत्वों को स्थान देना चाहता हूं। इसके लिए, मुझे गंतव्य सामग्री की गणना करने की आवश्यकता है स्क्रॉल में UIScrollView की ऑफ़सेट ViewWillBeginDecelerating: विधि या समान।गंतव्य सामग्री की गणना कैसे करें गति में UIScrollView की ऑफसेट

मुझे इसकी आवश्यकता यह है कि मैं गंतव्य सामग्री का उपयोग कर रहा हूं स्क्रॉलव्यू की सामग्री के भीतर घोंसला वाले दृश्यों को एनिमेट करने के लिए ऑफ़सेट करें उनकी अंतिम स्थिति देखें। मैं निश्चित रूप से सामग्री ऑफसेट या इसी तरह की सामग्री पर एक पर्यवेक्षक स्थापित कर सकता था, लेकिन इसके परिणामस्वरूप अराजक एनीमेशन के रूप में घोंसले के दृश्यों के बाद उनके पदों को कई बार अद्यतन किया जाएगा। मैं यह सिर्फ एक बार होना चाहता हूँ।

क्या ऐसा करने का कोई आसान तरीका है?

+2

यह किसी और प्रतीत होता है इस जरूरत भी है: http://stackoverflow.com/questions/1651560/predicting-the-resting-offset-in-a-uiscrollview-after-deceleration – Tricky

उत्तर

0

क्या कोई विशिष्ट कारण है कि आपको पहले से जानने की आवश्यकता है जहां स्क्रॉल व्यू रुकने जा रहा है? स्क्रॉल व्यू प्रतिनिधि के कार्यान्वयन में आप layoutSubviews (यदि आप UIScrollView को उपclass) में या scrollViewDidScroll: में अपने विचारों को स्थिति दे सकते हैं।

+1

हाय, हाँ वहाँ है । मैं स्क्रॉलव्यू की सामग्री के भीतर घोंसला वाले विचारों को एनिमेट करने की स्थिति का उपयोग करूँगा उनकी अंतिम स्थिति में देखें। मैं निश्चित रूप से सामग्री ऑफसेट या इसी तरह की सामग्री पर एक पर्यवेक्षक स्थापित कर सकता था, लेकिन इसके परिणामस्वरूप अराजक एनीमेशन के रूप में घोंसले के दृश्यों के बाद उनके पदों को कई बार अद्यतन किया जाएगा। – Tricky

0

मेरा मानना ​​है कि आप pagingEnabledUIScrollView पर स्वचालित रूप से प्रदान किए गए व्यवहार का जिक्र कर रहे हैं। iOS Reference LibraryUIScrollView पर, जब पेजिंग सक्षम है, "स्क्रॉल व्यू स्क्रॉल व्यू की सीमाओं के गुणाओं पर रुक जाता है जब उपयोगकर्ता स्क्रॉल करता है।" मैं हर समय इस व्यवहार का उपयोग करता हूं, और मेरा मानना ​​है कि आप जो वर्णन कर रहे हैं वह है। यह आपके लिए सभी कड़ी मेहनत को संभालता है - बस एक संपत्ति सेट करके!

अद्यतन: मुझे लगता है कि मैंने आपके प्रश्न को गलत समझा। स्क्रॉल व्यू के भीतर अपनी वर्तमान उत्पत्ति को निर्धारित करने के लिए आप UIScrollView की contentOffset संपत्ति को हमेशा देख सकते हैं। आप इसे प्रतिनिधि विधियों में से एक में कर सकते हैं, शायद scrollViewDidEndDecelerating:

+0

हां, आप वर्तमान सामग्री ऑफ़सेट प्राप्त कर सकते हैं, लेकिन मुझे गंतव्य सामग्री की आवश्यकता है ऑफसेट ... – Tricky

+0

स्क्रॉलव्यू छोड़ने तक आप अंतिम सामग्री ऑफ़सेट कैसे जानते हैं? – rcw3

1

इस के लिए एक प्रतिनिधि विधि है:

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset NS_AVAILABLE_IOS5(5_0); 

दस्तावेज़ के अनुसार:

उंगली ऊपर पर कहा जाता है, तो उपयोगकर्ता घसीटा। वेग अंक/दूसरे में है। targetContentOffset को समायोजित करने के लिए बदला जा सकता है जहां स्क्रॉल दृश्य आराम करने के लिए आता है। जब पेजिंग सक्षम नहीं है YES

0

सुनिश्चित नहीं है कि आपको अभी भी इसकी आवश्यकता है या नहीं। लेकिन यह है कि आप UIScrollView के प्रतिनिधि में कैसे प्राप्त कर सकते हैं।

-(void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset{ 
NSLog(@"X offset: %f", targetContentOffset->x); 
NSLog(@"Y offset: %f", targetContentOffset->y); 
}