ইতিমধ্যে এখানে কিছু ভাল উত্তর আছে। যাইহোক, পরিস্থিতিগুলির জন্য যেখানে সামগ্রী কোনও পৃষ্ঠায় হুবহু খাপ খায় না - এবং যদি আমার মতো আপনি ফলাফলটি a UIPageControlএর জন্য ব্যবহার করতে চান তবে ceilফাংশনটি ব্যবহার করা এটি প্রয়োজনীয় ।
আসুন একটি উদাহরণ নেওয়া যাক যেখানে আমার কাছে সামগ্রীর "চার এবং কিছুটা" পৃষ্ঠা রয়েছে।
আমি এটি আমার বর্তমান বাস্তব জীবনের উদাহরণের ভিত্তিতে করব। সামগ্রীর আকারের প্রস্থ 3140 পয়েন্ট। আমার সংগ্রহ ভিউ ফ্রেমের আকারের উপর ভিত্তি করে পৃষ্ঠার প্রস্থ 728।
পৃষ্ঠাগুলির সমান সংখ্যা:
3140 / 728 = 4.313
আমার numberOfPagesপাঁচ বছর হতে চলেছে। এর মধ্যে চারটি সম্পূর্ণরূপে প্রদর্শিত হবে, এবং এর মধ্যে সর্বশেষ - পাঁচ পৃষ্ঠায় - বাকিটি প্রদর্শন করবে0.313 অংশটি প্রদর্শিত হবে।
এখন, numberOfPages পাঁচটি হওয়ার অর্থাত্ পৃষ্ঠা সূচকগুলি 0, 1, 2, 3 এবং 4 হবে।
আমি যখন ডানদিকে সোয়াইপ করি তখন চূড়ান্ত অফসেটের দিকে পেজিং করি the scrollViewDidEndDecelerating পদ্ধতিটি 2412 এর একটি চূড়ান্ত এক্স অফসেট দেয়।
বৃত্তাকার গণনা প্রয়োগ করা:
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ব্যবহারকারীর স্ক্রোল করার সময় বর্তমান পৃষ্ঠাটি পেতে ব্যবহার করতে ভুলবেন না !