【问题标题】:How to do zoom in, out in UIScrollView using UISlider?如何使用 UISlider 在 UIScrollView 中进行放大、缩小?
【发布时间】:2018-12-03 13:08:13
【问题描述】:

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

【问题讨论】:

    标签: ios swift uislider


    【解决方案1】:

    这是一个让UIScrollView 进行缩放的最小示例。

    关键是你必须实现func viewForZooming(in scrollView: UIScrollView) -> UIView? 并返回一个要缩放的视图(在你的滚动视图中)(把它想象成你的“文档”或“画布”视图)。

    另外,请注意缩放也适用于滚动视图上的默认捏合手势。

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

    【讨论】:

    • 仍然无法正常工作。你能解释你应用的故事板约束吗? @Alladinian
    • @DigvijayGida 我已经对此进行了彻底的测试,并且在我这边工作正常。故事板也有一个最小的设置,只是一个带有子视图的滚动视图(在我的例子中是canvas)。你实现viewForZooming了吗?
    • 对不起它的工作。非常感谢您的帮助。你能再帮我一个吗?这里放大,缩小超级视图中心@Alladinian
    • @DigvijayGida 很高兴这对您有所帮助。如果您有任何其他问题,请考虑使用您当前的代码打开一个新问题。谢谢
    • 如果可能请回复。只是我需要在中心缩小。我不能一次提出更多问题,因为这里是每天提出问题的限制。 @Alladinian
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多