Вот минимальный пример получения UIScrollView
для увеличения.
Ключ в том, что вам нужно реализовать func viewForZooming(in scrollView: UIScrollView) -> UIView?
и вернуть представление (которое находится внутри вашего scrollView), которое нужно масштабировать(Думайте об этом как о вашем представлении «документ» или «холст»).
Кроме того, обратите внимание, что масштабирование работает и для жестов повышения по умолчанию в scrollView.
import UIKit
class ViewController: UIViewController, UIScrollViewDelegate {
// Assume that outlets exist on a storyboard
@IBOutlet var scrollView: UIScrollView!
@IBOutlet var canvas: UIView! // A view that is added in the scrollView
@IBOutlet var slider: UISlider!
let minScale: CGFloat = 1
let maxScale: CGFloat = 10
let initialScale: CGFloat = 1
override func viewDidLoad() {
super.viewDidLoad()
scrollView.delegate = self
scrollView.minimumZoomScale = minScale
scrollView.maximumZoomScale = maxScale
scrollView.zoomScale = initialScale
slider.minimumValue = Float(minScale)
slider.maximumValue = Float(maxScale)
slider.value = Float(initialScale)
}
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return canvas
}
@IBAction func sliderValueChanged(_ sender: UISlider) {
scrollView.zoomScale = CGFloat(sender.value)
}
}