2011-04-18 12 views
6

क्या एक Paging UIScrollView बनाने का कोई सुझाव दिया गया है जिसमें UISrollView की सीमाओं से अधिक व्यापक पृष्ठ हैं?"oversized" पृष्ठों के साथ एक पेजिंग UIScrollView कैसे बनाएं

मुझे इस तरह कुछ चाहिए। पृष्ठों के किनारों पर "rubberband" प्रभाव के साथ पृष्ठ 2 और पेजिंग मोड के भीतर

enter image description here

सामान्य स्क्रॉल।

पेजिंग प्रभाव मेरे लिए थोड़ा जटिल दिखता है, यदि आप तेजी से फ्लिक करते हैं तो आप अगले पृष्ठ पर जाते हैं, यदि आप धीमे स्लाइड करते हैं तो आप किनारे पर नया पृष्ठ देखते हैं और केवल एक निश्चित बिंदु के बाद पृष्ठ बदल जाता है।

शायद कोई इसे संभालने के तरीके पर कुछ प्रकाश डाल सकता है, क्या यह UIScrollViewDelegate विधियों के एकमात्र उपयोग के साथ भी संभव है या क्या मुझे उपclass करना है?

उत्तर

2

मैं प्रभावित हूं। शुरुआत में सोचा था कि यह वास्तव में बहुत आसान था।

सरल समाधान प्रत्येक पृष्ठ को गैर-पेजिंग स्क्रॉलव्यू में समाहित करना था। और हो गया। UIScrollViewDelegate को लागू करने की कोई आवश्यकता नहीं है, उपclass करने की कोई आवश्यकता नहीं है। कोड

के तीन अतिरिक्त लाइनें नियमित आकार पृष्ठों के लिए मैं कुछ इस तरह था:

UIView *myCustomView = [[[UIView alloc] initWithFrame:CGRectMake(totalWidth, 0, width, height)] autorelease]; 
[mainScroller addSubview:myCustomView]; 
totalWidth += width; 

और अब मैं इस है:

UIView *myCustomView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, bigWidth, height)] autorelease]; 
UIScrollView *secondaryScroller = [[[UIScrollView alloc] initWithFrame:CGRectMake(totalWidth, 0, width, height)] autorelease]; 
[secondaryScroller setContentSize:myCustomView.frame.size]; 
[secondaryScroller addSubview:myCustomView]; 
[mainScroller addSubview:secondaryScroller]; 
totalWidth += width; 

तीन लाइनों। गजब का।


दृश्य पदानुक्रम:

<UIScrollView: 0x4b32eb0; frame = (0 0; 768 1004); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0x4b32d00>; contentOffset: {0, 0}> 
    | <UIScrollView: 0x4b32710; frame = (0 0; 768 1004); clipsToBounds = YES; layer = <CALayer: 0x4b35580>; contentOffset: {0, 0}> 
    | | <UIView: 0x4b33f70; frame = (0 0; 1352 1004); layer = <CALayer: 0x4b16c20>> 
    | <UIScrollView: 0x4b34790; frame = (768 0; 768 1004); clipsToBounds = YES; layer = <CALayer: 0x4b33e10>; contentOffset: {0, 0}> 
    | | <UIView: 0x4b30fa0; frame = (0 0; 789 1004); layer = <CALayer: 0x4b329f0>> 
    | <UIScrollView: 0x4b34920; frame = (1536 0; 768 1004); clipsToBounds = YES; layer = <CALayer: 0x4b33180>; contentOffset: {0, 0}> 
    | | <UIView: 0x4b30d00; frame = (0 0; 1398 1004); layer = <CALayer: 0x4b33120>> 
    | <UIScrollView: 0x4b31fe0; frame = (2304 0; 768 1004); clipsToBounds = YES; layer = <CALayer: 0x4b32170>; contentOffset: {0, 0}> 
    | | <UIView: 0x4b34c50; frame = (0 0; 863 1004); layer = <CALayer: 0x4b31f80>> 
    | <UIScrollView: 0x4b32460; frame = (3072 0; 768 1004); clipsToBounds = YES; layer = <CALayer: 0x4b325f0>; contentOffset: {0, 0}> 
    | | <UIView: 0x4b323d0; frame = (0 0; 1064 1004); layer = <CALayer: 0x4b32400>> 
0

जहां तक ​​मुझे पता है, स्क्रॉलव्यू पेजिंग प्रॉपर्टी का उपयोग करके इसे सीधे प्राप्त करने का कोई तरीका नहीं है।

आप अपनी खुद की UIScrollView उपवर्ग को लागू करने के लिए होता है और अपने कार्यान्वयन फ़ाइल के भीतर आप को लागू करने की आवश्यकता होगी:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event; 
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event; 
-(void)touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event; 

व्यायाम करें कितना स्क्रॉल दृश्य contentOffset संपत्ति का उपयोग कर स्क्रॉल किया गया है।

और अपनी खुद की कस्टम स्क्रॉलिंग कार्यक्षमता को लागू करने के लिए UIScrollViews के scrollRectToVisible: का उपयोग करें।

[self scrollRectToVisible:CGRectMake(horizontalScrollAmount,virticalScrollAmount,rectWidth,rectHeight) animated:NO]; 

घटनाओं की श्रृंखला की तरह कुछ होगा: एक शुरुआत स्पर्श से स्थान रिकॉर्ड, अगर स्पर्श चलता है, किस दिशा में यह अगर इसकी x/y समन्वय देखने के लिए जाँच के द्वारा ले जाया गया से अधिक या कम है पता लगाना अपनी प्रारंभिक स्थिति की तुलना में, यदि छुआ स्क्रीन पर पर्याप्त मात्रा में स्थानांतरित हो जाता है, तो scrollRectToVisible: का उपयोग करके अपने नामित पेजिंग आकार द्वारा दृश्य को स्क्रॉल करें।

http://www.edumobile.org/iphone/iphone-programming-tutorials/pagecontrol-example-in-iphone/

आप एक बड़ा पेज बनाना चाहते हैं, तो आप इस ट्यूटोरियल में PageControlExampleViewControl के दृश्य के आकार में वृद्धि कर सकते हैं -

0

मैं इस ट्यूटोरियल का इस्तेमाल किया। आइए डिफ़ॉल्ट रूप से 320 की बजाय इसकी चौड़ाई 360 बनाएं।

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