Как сделать увеличение или уменьшение масштаба в UIScrollView с помощью UISlider? - PullRequest
0 голосов
/ 03 декабря 2018

Mainscroll - это scrollview, который был добавлен в другой внутренний 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)
}

1 Ответ

0 голосов
/ 03 декабря 2018

Вот минимальный пример получения 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)
    }

}
...