climbon climbon - 1 year ago 156
iOS Question

Programmatically scroll a UIScrollView

I have a

which has several views. When a user flicks their finger, the view scrolls to the right or left depending on the direction of the finger flick. Basically my code works in a way similar to the iPhone photo app. Now, is there a way that I can programmatically do the same thing so that I end up with a slideshow that runs on its own with a click of a button and a configurable pause between each scroll?

How do you really do slideshows with

Answer Source

You can scroll to some point in a scroll view with one of the following statements in Obj-C

[scrollView scrollRectToVisible:CGRectMake(x, y, 1, 1), animated:YES];
// or
[scrollView setContentOffset:CGPointMake(x, y) animated:YES];

or Swift

scrollView.scrollRectToVisible(CGRect(x: x, y: y, width: 1, height: 1), animated: true)
// or
scrollView.setContentOffset(CGPoint(x: x, y: y), animated: true)

See the guide "Scrolling the Scroll View Content" from Apple as well.

To do slideshows with UIScrollView, you arrange all images in the scroll view, set up a repeated timer, then -setContentOffset:animated: when the timer fires.

But a more efficient approach is to use 2 image views and swap them using transitions or simply switching places when the timer fires. See iPhone Image slideshow for details.