【问题标题】:How to Zoom in on a scroll view in swift 4?如何在swift 4中放大滚动视图?
【发布时间】:2020-08-18 23:42:38
【问题描述】:

我的视图控制器以编程方式在滚动视图内的网格中创建多个图像视图。我希望能够捏放大/缩小。我在下面粘贴了一些类似的代码,我发现堆栈溢出试图做同样的事情。问题是 viewForZooming 只返回一个图像。如何让捏缩放以适用于滚动视图中的所有图像视图?我只想在您捏合/张开时调整滚动视图的缩放比例。

以下代码是我尝试实现所需功能的代码:

class PhotoViewController: UIViewController, UIScrollViewDelegate {

@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var image: UIImageView!
  
override func viewDidLoad() {
    super.viewDidLoad()

    scrollView.minimumZoomScale = 1.0
    scrollView.maximumZoomScale = 6.0        
    scrollView.delegate = self 
}  
    
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
    return image
}

}

【问题讨论】:

  • 您有“滚动视图内的网格中有多个图像视图” ...您要缩放单个图像视图,而将其他图像视图保留为原始大小吗?还是要整体缩放滚动视图的内容?
  • 放大滚动视图的整体内容。我的滚动视图一次包含 1-20 个图像视图

标签: arrays swift uiscrollview pinchzoom uipinchgesturerecognizer


【解决方案1】:

如果您想将多个图像视图(或其他 UI 元素)作为一个整体进行缩放,您需要将它们嵌入到 UIView 中。然后,在viewForZooming 中返回该视图。

这是一个简单的例子:

黄色矩形是UIView,我通过@IBOutlet 将其连接为myContentView。它有 3 个图像视图作为子视图。

滚动视图有红色背景,这里看不到,因为 myContentView 设置为与滚动视图框架相等的宽度和高度(但您会在下面缩小的屏幕截图中看到它)。

代码如下:

class MultiZoomViewController: UIViewController, UIScrollViewDelegate {
    
    @IBOutlet var scrollView: UIScrollView!
    @IBOutlet var myContentView: UIView!

    override func viewDidLoad() {
        super.viewDidLoad()
    
        scrollView.minimumZoomScale = 0.5
        scrollView.maximumZoomScale = 6.0
        scrollView.delegate = self
        
    }

    func viewForZooming(in scrollView: UIScrollView) -> UIView? {
        return myContentView
    }

}

结果 - 开始/缩小/放大:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-09
    • 1970-01-01
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多