How can I make uiscrollview infinite in iOS?
Main idea is to reposition your scrollview back to some constant value, when it has been scrolled to some value and then auto-reposition your "1" , "2", "3" items correctly.
For example - You would have scrollview with contentwidth 5000. By default You set it to position 2500.
then You simply check in - (void)scrollViewDidCScroll:(UIScrollView *)scrollview
- if scrollview.contentoffset.x > 3500 - then decrease it's position to scrollview.contentoffset.x -=1000;
and the same about other side. This will result in infinite scrolling.
But content will not follow. So - You would need to implement extra content offset value checking to reorder and reposition correctly "1", "2", "3", items.
I usually use 3 elements and then dynamically preload necessary gallery image for them.
If You don't want to re-invent the "wheel" , check out these solutions:
https://www.cocoacontrols.com/controls/dmcircularscrollview
https://www.cocoacontrols.com/controls/infinitescrollview
https://www.cocoacontrols.com/controls/iainfinitegridview
Just need to do set setContentOffset count
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
if (scrollView.contentOffset.x > 2500+(29+70)*4 + ((29+70)*36)) {
[scrollView setContentOffset:CGPointMake(scrollView.contentOffset.x-((29+70)*36), 0)];
}
if (scrollView.contentOffset.x < 2500+(29+70)*4){
[scrollView setContentOffset:CGPointMake(scrollView.contentOffset.x+((29+70)*36), 0)];
}
}
You can check out this solution based on Apple StreetScroller iOS sample code:
https://github.com/gblancogarcia/GBInfiniteScrollView
I hope it helps!