スクロールビューを作成するときは、次のように設定してください。
scrollView.showsHorizontalScrollIndicator = false
scrollView.showsVerticalScrollIndicator = false
scrollView.pagingEnabled = true
次に、サブビューを、インデックス*スクローラーの高さに等しいオフセットでスクローラーに追加します。これは垂直スクローラー用です。
UIView * sub = [UIView new];
sub.frame = CGRectMake(0, index * h, w, subViewHeight);
[scrollView addSubview:sub];
これを実行すると、ビューの間隔が空けられ、ページングが有効になっていると、一度に1つずつスクロールします。
したがって、これを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に近づく傾向があります。