[英]Swift - UIScrollView Jumps to first page instead scrolling to it
有沒有一種方法可以將圓形滾動添加到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)
}
}
任何想法如何做到這一點?
您將需要在后勤工作中做少量的工作,但這並不太麻煩。
似乎將內容的第一頁顯示在最后一頁的右側,這並不是滾動視圖本來可以執行的操作。 要解決此問題,您需要在右側增加一個屏幕來擴展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
,因為%
僅在其中為積分算術定義了)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.