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)
}
Ответ 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)
}
}