2011-02-23 15 views
17

मैं पेजिंग सक्षम के साथ एक क्षैतिज स्क्रॉलिंग UIScrollView रखना चाहता हूं। इस स्क्रॉलव्यू के पृष्ठों में अलग-अलग चौड़ाई हैं, इसलिए स्क्रॉलिंग दूरी पृष्ठ से पृष्ठ पर भिन्न होती है।विभिन्न पेज चौड़ाई के साथ UIScrollView पेजिंग

लक्ष्य, समय में विभिन्न बिंदुओं के लिए एक पिकर बनाने के लिए है, उदा .:

| Now | Yesterday evening | Last Week | Last Month | 
    ^   ^   ^   ^   <- stopps here 

यहाँ | Now || Yesterday evening | तुलना में एक छोटे चौड़ाई है। इस मान के माध्यम से पेजिंग करते समय, स्क्रॉलव्यू मान के मूल्य के केंद्र में रुक जाना चाहिए।

क्या यह संभव है?

+0

इस प्रश्न पर मेरा उत्तर देखें: http://stackoverflow.com/a/10993426/60488 –

उत्तर

12

यह निश्चित रूप से संभव है, लेकिन इतना स्वचालित रूप से नहीं है ...

मैं लगता है कि आप UIScrollViewDelegate प्रोटोकॉल विधि को लागू करना चाहिए:

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{ 

} 

यह विधि है जब उपयोगकर्ता स्टॉप पर उंगली स्थानांतरित करने के लिए कहा जाता है scrollview, आप इसे अंदर जांच कर सकते हैं अपनी सामग्री के समन्वय:

yourScrollView.contentOffset 

और उसके बाद जाँच जो अपने पा में से एक ge.x (जब आप उन्हें बनाते हैं तो उन्हें एक सरणी में पंजीकृत करें, या स्क्रॉल व्यू में जोड़े गए अपने सभी दृश्यों की उत्पत्ति की जांच करें) इसके करीब है, फिर अपने पृष्ठ के ऑफसेट (एनीमेशन के साथ) पर जाएं:

- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated 
+0

धन्यवाद मेरोनिक्स, यह वही था जो मैं ढूंढ रहा था! कुछ अतिरिक्त युक्तियाँ: (शून्य) scrollViewDidEndDecelerating - ': (UIScrollView *) scrollView' – liefersfl

+3

के लिए - -' 'UIScrollView.pagingEnabled' NO' करने के लिए सेट किया जाना है मैं भी UIScrollViewDelegate प्रोटोकॉल विधि को लागू करने के लिए किया था एक बेहतर परिणाम मैंने '- scrollViewWillBeginDecelerating को कार्यान्वित करना समाप्त कर दिया: (UIScrollView *) scrollView' विधि – darune

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