Khi tạo chế độ xem cuộn, hãy đảm bảo bạn đặt điều này:
scrollView.showsHorizontalScrollIndicator = false
scrollView.showsVerticalScrollIndicator = false
scrollView.pagingEnabled = true
Sau đó, thêm các lượt xem phụ của bạn vào cuộn ở độ lệch bằng chỉ số * chiều cao của cuộn. Đây là cho một cuộn dọc:
UIView * sub = [UIView new];
sub.frame = CGRectMake(0, index * h, w, subViewHeight);
[scrollView addSubview:sub];
Nếu bạn chạy nó ngay bây giờ, các dạng xem sẽ được giãn ra và khi bật phân trang, chúng sẽ cuộn từng cái một.
Vì vậy, sau đó đặt nó trong phương thức viewDidScroll của bạn:
int index = scrollView.contentOffset.y / h;
float y = scrollView.contentOffset.y;
float p = (y / h)-index;
int subViewHeight = h-240;
int spacing = 30;
NSArray * array = scrollView.subviews;
for (UIView * sub in array){
int subIndex = (int)[array indexOfObject:sub];
float transform = (-h * subIndex);
transform += (subViewHeight + spacing) * subIndex;
transform += (h - subViewHeight - spacing) * p;
transform += index * (h - subViewHeight - spacing);
sub.transform = CGAffineTransformMakeTranslation(0, transform);
}
Các khung của các lần xem phụ vẫn được đặt cách nhau, chúng tôi chỉ di chuyển chúng lại với nhau thông qua một biến đổi khi người dùng cuộn.
Ngoài ra, bạn có quyền truy cập vào biến p ở trên, bạn có thể sử dụng biến này cho những thứ khác, như alpha hoặc biến đổi trong các lần xem phụ. Khi p == 1, trang đó đang được hiển thị đầy đủ, hay đúng hơn là nó có xu hướng về 1.