放大滚动视图
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?”为此目的,滚动视图只能为此询问您的视图控制器。我认为您需要类似的东西:添加一些视图并在该视图中添加图像视图作为子视图。上面的方法将返回该视图。以上是关于放大滚动视图的主要内容,如果未能解决你的问题,请参考以下文章