scrollview를 만들 때 다음을 설정해야합니다.
scrollView.showsHorizontalScrollIndicator = false
scrollView.showsVerticalScrollIndicator = false
scrollView.pagingEnabled = true
그런 다음 스크롤러의 인덱스 * 높이와 동일한 오프셋에서 스크롤러에 하위 뷰를 추가합니다. 이것은 수직 스크롤러 용입니다.
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을 향하는 경향이 있습니다.