如何使用 UISlider 在 UIScrollView 中放大、缩小?

How to do zoom in, out in UIScrollView using UISlider?

Mainscroll 是添加到另一个内部 UIView 中的滚动视图,我有 UISlider 来更改内部视图比例。

但是,MainScroll.setZoomScale(CGFloat(sender.value), animated: true)这条线是行不通的。

==> 这是我的代码。

override func viewDidLoad() {
    super.viewDidLoad()



    MainScroll.maximumZoomScale = 1
    MainScroll.minimumZoomScale = 10

    MainScroll.delegate = self

    MainScroll.zoomScale = 5
}

@IBAction func Scrolling(_ sender: UISlider) {

    MainScroll.setZoomScale(CGFloat(sender.value), animated: true)
}

这是让 UIScrollView 缩放的最小示例。

关键是你必须实现 func viewForZooming(in scrollView: UIScrollView) -> UIView? 和 return 一个要缩放的视图(在你的 scrollView 中)(把它想象成你的 'document' 或'canvas' 查看)。

另外,请注意缩放也适用于 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)
    }

}