Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как увеличивать и уменьшать масштаб в UIScrollView с помощью UISlider?

Автор вопроса: Digvijay GidaОтветов: 1

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)
}

iosswiftuislider

Ответы

Ответ 1 · рейтинг 2 · Alladinian

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

}

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы