有没有办法将圆圈滚动添加到UIScrollView? 例如,如果滚动到达最后一页,则第一页应该是下一页,如果滚动到达第一页,则最后一页应该是下一页。
我一直在尝试使用scrollViewDidScroll函数,但是当滚动到达最后一页时,视图会跳回到第一个视图,而不是滚动到它或将其添加到它旁边。
我的代码是:
func scrollViewDidScroll(scrollView: UIScrollView) {
if (scrollView.contentOffset.x > scrollView.frame.size.width){
scrollView.setContentOffset(CGPointZero, animated: true)
//scrollView.scrollRectToVisible(CGRectMake(0, 0, 1, 1), animated: false)
}
if (scrollView.contentOffset.x < 0){
scrollView.setContentOffset(CGPointMake(scrollView.frame.size.width,0.0), animated: true)
}
}
任何想法如何做到这一点?
答案 0 :(得分:1)
你将不得不在后面做一小部分工作,但这并不是太艰难。
看似在最后一页显示内容的第一页不是滚动视图本身可以做的事情。要解决此问题,您需要将contentSize
扩展到右侧的额外屏幕并复制您的内容。
这将使你的内容区域覆盖[0,最后一页的结尾]到[0,最后一页的结尾+ 1)。但是你仍然希望滚动被约束到[0,最后一页],并且[-1,0]范围内的偏移被映射到[最后一页,最后一页+ 1]。所以:
func scrollViewDidScroll(scrollView: UIScrollView) {
let realContentWidth = scrollView.contentSize.width - scrollView.bounds.size.width
scrollView.contentOffset.x = ((scrollView.contentOffset.x % realContentWidth)
+ realContentWidth) % realContentWidth;
}
该模数的逻辑是:
(快速观察Objective-C'ers:%
是在Swift中的浮点数上定义的;在Objective-C中,你使用fmod
作为%
}仅为整数算术定义)