เมื่อสร้างมุมมองเลื่อนตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่าสิ่งนี้:
scrollView.showsHorizontalScrollIndicator = false
scrollView.showsVerticalScrollIndicator = false
scrollView.pagingEnabled = true
จากนั้นเพิ่มมุมมองย่อยของคุณไปยัง scroller โดยมีค่าชดเชยเท่ากับดัชนี * ความสูงของ scroller นี่คือสำหรับ scroller แนวตั้ง:
UIView * sub = [UIView new];
sub.frame = CGRectMake(0, index * h, w, subViewHeight);
[scrollView addSubview:sub];
หากคุณเรียกใช้ตอนนี้มุมมองจะถูกเว้นระยะห่างและเมื่อเปิดใช้งานเพจแล้วจะเลื่อนไปทีละครั้ง
จากนั้นใส่สิ่งนี้ในเมธอด viewDidScroll ของคุณ:
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);
}
เฟรมของมุมมองย่อยยังคงเว้นระยะห่างเราเพียงแค่ขยับเข้าด้วยกันผ่านการแปลงเมื่อผู้ใช้เลื่อน
นอกจากนี้คุณยังสามารถเข้าถึงตัวแปร p ด้านบนซึ่งคุณสามารถใช้สำหรับสิ่งอื่น ๆ เช่นอัลฟาหรือการแปลงภายในมุมมองย่อย เมื่อ p == 1 หน้านั้นจะแสดงอย่างสมบูรณ์หรือค่อนข้างจะเป็น 1