我正在处理一个scrollview,我希望它能够启用分页,但是当我尝试将内容设置为自定义宽度时,我需要帮助,谢谢!
继续我正在尝试的事情:
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {
int PageNum = (int)(scrollView.contentOffset.x / 140);
targetContentOffset->x = PageNum * (int)(targetContentOffset->x / PageNum);
}
当我scrollViewDidScroll:
添加一个NSlog并正确打印当前页面时,无效的是分页宽度的自定义:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
int PageNum = (int)(scrollView.contentOffset.x / 140);
NSLog(@"%d", PageNum);
}
希望有人可以帮助我,谢谢!
答案 0 :(得分:0)
坦率地说,我真的不了解你的代码以及你要做什么。 这个答案可能与您的问题无关,但无论如何它可能会有所帮助。
targetContentOffset->x = PageNum * (int)(targetContentOffset->x / PageNum);
与
相当targetContentOffset->x = (int)(targetContentOffset->x);
除了一些四舍五入之外似乎没什么用。如果你为舍入的副作用这样做,那么忽略我的答案。
答案 1 :(得分:0)
您无需在scrollViewWillEndDragging:withVelocity:targetContentOffset:
中实施paging
方法即可启用UIScrollView
。为此,您只需要:
pagingEnabled
属性设置为YES
。有关此属性的文档说明:如果此属性的值为YES,则滚动视图会在用户滚动时停止滚动视图边界的倍数。 width
必须等于滚动视图的宽度,才能检索水平分页的滚动视图。contentSize
属性。所以你的代码应该是这样的:
[scrollView setPagingEnabled:YES];
NSInteger numberOfPages = 100;
CGFloat pageWidth = scrollView.bounds.size.width;
CGFloat pageHeight = scrollView.bounds.size.height; // can be something else
for(NSInteger i = 0; i < numberOfPages; i++)
{
UIView * view = [[UIView alloc] initWithFrame:CGRectMake(i * pageWidth, 0, pageWidth, pageHeight)];
// do somethings with the page view
[scrollView addSubview:view];
}
[scrollView setContentSize:CGSizeMake(numberOfPages * pageWidth, scrollView.bounds.size.height)];