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

Posted

技术标签:

【中文标题】如何使用 UISlider 在 UIScrollView 中进行放大、缩小?【英文标题】:How to do zoom in, out in UIScrollView using UISlider? 【发布时间】: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)

【问题讨论】:

【参考方案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

以上是关于如何使用 UISlider 在 UIScrollView 中进行放大、缩小?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 UISlider 旋转 UIImageView?

如何在使用 UISlider 更改音量时隐藏 Iphone 音量框?

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

如何使用 UISlider 在特定时间从 mpmovieplayer 听到声音?

如何在 Swift 中使用 UISlider 更改 UIImageView 中的图像

如何在单个@IBAction 中获取多个 UISlider 的值?