2011-01-20 16 views
6

मेरे पास मेरे एप्लिकेशन में एक यूआईपीएज कंट्रोल है जो लगभग 10 पृष्ठों (डॉट्स) के साथ बिल्कुल ठीक दिखता है, हालांकि यह संभव है कि उपयोगकर्ता के लिए कई अलग अलग विचारों को जोड़ने के लिए, और इसलिए डॉट्स की संख्या का कहना है कि 30UIPageControl को संभालने का सबसे अच्छा तरीका क्या है जिसमें स्क्रीन पर सभी फिट नहीं हैं

जब ऐसा होता है डॉट्स बस स्क्रीन के किनारे गायब हो सकता है, और आप हमेशा वर्तमान में चयनित पेज नहीं देख सकते, यह सब भयानक देखो।

क्या पेज कंट्रोल मल्टी-लाइन बनाने का कोई तरीका है, या वर्तमान में दृश्यमान पृष्ठ स्क्रीन के गायब होने पर इसे बाएं या दाएं स्थानांतरित करने का कोई तरीका है।

+0

मेरे ज्ञान के अनुसार, यदि आपके पास बहुत से पृष्ठ हैं, तो UIPageControl के अलावा किसी अन्य विधि का उपयोग करना बेहतर होगा। – Sarah

+0

यह एक सामान्य स्थिति नहीं है, 99% समय केवल 5-6 पृष्ठ होंगे और पृष्ठ दृश्य उपयोगी और सही विकल्प होगा। समस्या यह है कि जितना चाहें उतना जोड़ना संभव है, और जब ऐसा होता है (अक्सर नहीं) मैं इसे भयानक नहीं देखना चाहता। – BinaryGuy

+0

मैंने इसे इस तरह कार्यान्वित किया है कि यदि पृष्ठों की संख्या उपलब्ध स्थान से अधिक हो जाती है तो किनारे दो बिंदु तीर (घुमावदार त्रिकोण) में परिवर्तित हो जाएंगे जो दर्शाता है कि और भी कुछ है। – Andrej

उत्तर

3

मैंने एक ईबुक एप्लिकेशन बनाया जिसने UIScrollView का उपयोग किया जिसमें UIWebView था। पुस्तक में 100 से अधिक पेज थे इसलिए UIPageControl आपके द्वारा इंगित की गई समस्या के कारण इसे संभाल नहीं सके। मैंने एक कस्टम "स्लाइडर" प्रकार का दृश्य बनाया जो यूआईपीएज कंट्रोल के समान काम करता था लेकिन बड़ी संख्या में पृष्ठों को संभाल सकता था। यह बहुत कुछ है जो आपको करने की आवश्यकता होगी। यूआईपीएज नियंत्रण जितना चाहें उतने पेजों को संभाल नहीं सकता है ...

+2

क्या आप मुझे अपना कस्टम स्लाइडर दिखाएंगे? – user403015

2

पृष्ठों/डॉट अनुपात की गणना करें और फ्लोट वैल्यू के रूप में स्टोर करें। फिर वर्तमान बिंदु/पृष्ठों के रूप में वर्तमान डॉट नंबर की गणना करें। डॉट चाल को देखने से पहले आपको कुछ पृष्ठों को अग्रिम करने की आवश्यकता हो सकती है, लेकिन यह बहुत स्केलेबल है और अच्छी तरह से काम करता है।

0

मुझे अपने क्षैतिज संग्रह दृश्य के तहत UIPageControl को लागू करना था जिसमें 30 आइटम थे। तो मैंने डॉट्स की संख्या को ठीक करके और उन बिंदुओं में स्क्रॉल करके बिंदुओं की संख्या को कम करने के लिए क्या किया। कोड का पालन करें:

@IBOutlet var pageControl: UIPageControl! 
var collectionDataList = [String] 
let dotsCount = 5 

override func viewDidAppear(_ animated: Bool) { 
    if collectionDataList.count < dotsCount { 
     self.pageControl.numberOfPages = collectionDataList.count 
    } else { 
     self.pageControl.numberOfPages = dotsCount 
    } 
} 

func scrollViewDidScroll(_ scrollView: UIScrollView) 
{ 
    let pageWidth = scrollView.frame.width 
    self.currentPage = Int((scrollView.contentOffset.x + pageWidth/2)/pageWidth) 
    self.pageControl.currentPage = self.currentPage % dotsCount 

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

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