【问题标题】: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 个灰点时,不会发生缩放。

【问题讨论】:

标签: ios swift scrollview zooming


【解决方案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?”为此目的,滚动视图只能为此询问您的视图控制器。我认为您需要类似的东西:添加一些视图并在该视图中添加图像视图作为子视图。上面的方法将返回该视图。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多