Đã có một số câu trả lời hay ở đây. Tuy nhiên, đối với các tình huống mà nội dung không vừa chính xác với một trang - và nếu giống như tôi, bạn muốn sử dụng kết quả cho một UIPageControl
, thì điều cần thiết là sử dụng ceil
hàm.
Hãy lấy một ví dụ mà tôi có trang nội dung "bốn và một chút".
Tôi sẽ căn cứ vào ví dụ thực tế hiện tại của mình. Chiều rộng kích thước nội dung là 3140 điểm. Dựa trên kích thước khung xem bộ sưu tập của tôi, chiều rộng trang là 728.
Vì vậy, số trang bằng:
3140 / 728 = 4.313
My numberOfPages
sắp lên năm. Bốn trong số đó sẽ hiển thị toàn bộ, và trang cuối cùng - trang năm - sẽ hiển thị phần 0.313
nội dung còn lại .
Bây giờ, numberOfPages
là năm có nghĩa là các chỉ số trang sẽ là 0, 1, 2, 3 và 4.
Khi tôi vuốt sang phải, phân trang theo hướng bù đắp cuối cùng, scrollViewDidEndDecelerating
phương pháp này cung cấp độ lệch X cuối cùng là 2412.
Áp dụng phép tính làm tròn:
2412 / 728 = 3.313 then rounded = 3
Điều đó không chính xác. Người dùng trang đang xem theo độ lệch phải là:
Offset / Page User Is Viewing
0 0
728 1
1456 2
2184 3
2412 4
Phép tính đúng bằng cách sử dụng 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
để lấy trang hiện tại khi người dùng cuộn!