Search code examples
iosobjective-cuiscrollviewscroll

Programmatically scroll a UIScrollView


I have a UIScrollView 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 UIScrollView?


Solution

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

    [scrollView setContentOffset:CGPointMake(x, y) animated:YES];
    

    or Swift

    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.