如何使用 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 更改音量时隐藏 Iphone 音量框?
如何使用 UISlider 在 UIScrollView 中进行放大、缩小?
如何使用 UISlider 在特定时间从 mpmovieplayer 听到声音?