放大滚动视图

Posted

技术标签:

【中文标题】放大滚动视图【英文标题】:Zoom in a Scroll View 【发布时间】:2017-05-06 10:03:16 【问题描述】:

我有点困惑。我按照 Apple 给出的建议,但没有任何反应。

代码:

import UIKit
import SpriteKit

class ScrollViewController: UIViewController, UIScrollViewDelegate 
    var scrollView: UIScrollView!
    var imageView: UIImageView!

    override func viewDidLoad() 
        super.viewDidLoad()

        imageView = UIImageView(image: UIImage(named: "image.png"))
        scrollView = UIScrollView(frame: view.bounds)
        scrollView.contentSize = imageView.bounds.size
        scrollView.addSubview(imageView)
        self.scrollView.delegate = self
        self.scrollView.minimumZoomScale = 0.5
        self.scrollView.maximumZoomScale = 3
        view.addSubview(scrollView)
    

        func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? 
        return imageView
    

我可能遗漏了一些东西。但是,垂直或水平滚动的功能效果很好。但是当我按“选项”并移动 2 个灰点时,不会发生缩放。

【问题讨论】:

***.com/a/43200996/1292099 查看我对 ***.com/questions/43624834/… 的回答。它工作得很好。 【参考方案1】:

您为委托方法输入了错误的名称。似乎您从以前版本的 Swift 中复制了该代码。在 Swift 3 中应该是:

func viewForZooming(in scrollView: UIScrollView) -> UIView? 
    return imageView

小心这样的错误,它会浪费很多时间。我建议您再次键入每个委托方法“viewforzoom...”,自动完成将显示正确的方法。

【讨论】:

只是另一个问题,viewForZooming 协议似乎需要返回一个 UIView。但是我在我的滚动视图中创建了一个 UIImageVIew 数组,我想返回它们,这可能吗?就我而言,我尝试了: func viewForZooming(in scrollView: UIScrollView) -> ([UIView]) return postItTable with postItTable = [UIIMageView]() viewForZooming 不是协议。称为 UIScrollViewDelegate 的协议,它定义了您的类 (ScrollViewController) 应该实现的确切方法。协议只有“viewForZooming(in scrollView: UIScrollView) -> UIView?”为此目的,滚动视图只能为此询问您的视图控制器。我认为您需要类似的东西:添加一些视图并在该视图中添加图像视图作为子视图。上面的方法将返回该视图。

以上是关于放大滚动视图的主要内容,如果未能解决你的问题,请参考以下文章

如何在放大滚动视图Objective-C时聚焦特定视图

在我做其他事情时禁用放大滚动视图

放大滚动视图

在滚动视图中捏放大

使 UIScrollView 中的顶部图像在滚动视图边界上放大?

如何在 Android 的滚动视图中放大/更改子图像视图尺寸以使图像全尺寸