यहाँ पहले से ही कुछ अच्छे उत्तर हैं। हालांकि, ऐसे परिदृश्यों के लिए जहां सामग्री एक पृष्ठ में बिल्कुल फिट नहीं होती है - और अगर मेरी तरह आप परिणाम के लिए उपयोग करना चाहते हैं UIPageControl
, तो ceil
फ़ंक्शन का उपयोग करना आवश्यक है ।
आइए एक उदाहरण लेते हैं जहां मेरे पास सामग्री के "चार और एक बिट" पृष्ठ हैं।
मैं इसे अपने वर्तमान वास्तविक जीवन उदाहरण पर आधारित करूँगा। सामग्री का आकार चौड़ाई 3140 अंक है। मेरे संग्रह दृश्य फ़्रेम आकार के आधार पर, पृष्ठ की चौड़ाई 728 है।
इसलिए पृष्ठों की संख्या बराबर है:
3140 / 728 = 4.313
मेरा numberOfPages
पांच होने वाला है। जिनमें से चार संपूर्णता में दिखेंगे, और जिनमें से अंतिम - पृष्ठ पाँच - उस शेष 0.313
सामग्री को दिखाएगा ।
अब, numberOfPages
पांच होने का मतलब है कि पेज इंडेक्स 0, 1, 2, 3 और 4 होगा।
जब मैं दाईं ओर स्वाइप करता हूं, तो अंतिम ऑफसेट की ओर बढ़ते हुए scrollViewDidEndDecelerating
विधि 2412 की अंतिम X ऑफसेट देती है।
गोलाई गणना लागू करना:
2412 / 728 = 3.313 then rounded = 3
यह गलत है। पृष्ठ उपयोगकर्ता ऑफसेट द्वारा देखा जाना चाहिए:
Offset / Page User Is Viewing
0 0
728 1
1456 2
2184 3
2412 4
सही गणना का उपयोग कर ceil
:
private func pageForOffset(offset:CGFloat, pageWidth width:CGFloat) -> Int
{
let page = Int(ceil(offset / width))
NSLog("\(__FUNCTION__) offset \(offset) width \(width) page \(page) ")
return page
}
UIScrollViewDelegate
उपयोगकर्ता स्क्रॉल करने पर वर्तमान पृष्ठ प्राप्त करने के लिए उपयोग करना न भूलें !