NEW: Nominations are now open for the 2019 Swift Community Awards! >>

How to support pinch to zoom in a UIScrollView

Swift version: 5.1

Paul Hudson    @twostraws   

Making a scroll view zoom when you pinch is a multi-step approach, and you need to do all the steps in order for things to work correctly.

First, make sure your scroll view has a maximum zoom scale larger than the default of 1.0. You can change this in Interface Builder if you want, or use the maximumZoomScale property in code.

Second, make your view controller the delegate of your scroll view. Again, you can do this in Interface Builder by Ctrl-dragging from the scroll view to your view controller.

Third, make your view controller conform to the UIScrollViewDelegate protocol, then add the viewForZooming(in:) method, like this:

func viewForZooming(in scrollView: UIScrollView) -> UIView? {
    return someView
}

That's it for code, but make sure you create your layouts consistently – whether you use Auto Layout or not, you need to be careful to follow Apple's instructions.

LEARN SWIFTUI FOR FREE I have a massive, free SwiftUI video collection on YouTube teaching you how to build complete apps with SwiftUI – check it out!

Available from iOS 2.0

Similar solutions…

About the Swift Knowledge Base

This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.

MASTER SWIFT NOW
Buy Testing Swift Buy Practical iOS 12 Buy Pro Swift Buy Swift Design Patterns Buy Swift Coding Challenges Buy Server-Side Swift (Vapor Edition) Buy Server-Side Swift (Kitura Edition) Buy Hacking with macOS Buy Advanced iOS Volume One Buy Advanced iOS Volume Two Buy Hacking with watchOS Buy Hacking with tvOS Buy Hacking with Swift Buy Dive Into SpriteKit Buy Swift in Sixty Seconds Buy Objective-C for Swift Developers Buy Beyond Code

Was this page useful? Let us know!

Average rating: 3.4/5