How do I programmatically zoom a UIScrollView?

I’m answering my own question, after playing with things and getting it working.

Apple has a very-simple example of this in their documentation on how to handle double taps.

The basic approach to doing programmatic zooms is to do it yourself, and then tell the UIScrollView that you did it.

  • Adjust the internal view’s frame and bounds.
  • Mark the internal view as needing display.
  • Tell the UIScrollView about the new content size.
  • Calculate the portion of your
    internal view that should be
    displayed after the zoom, and have
    the UIScrollView pan to that
    location.

Also key: once you tell the UIScrollView about your new contents size it seems to reset its concept of the current zoom level. You are now at the new 1.0 zoom factor. So you’ll almost certainly want to reset the minimum and maximum zoom factors.

Leave a Comment