【发布时间】:2016-02-01 05:28:32
【问题描述】:
我正在尝试完成一个可以放大 UIScrollView 的场景。我已经看到实现这一点的最佳方法是拥有一个包罗万象的scrollView,它支持滚动,并在内部拥有另一个UIScrollViewView(而不是在内部拥有UIImageView的正常应用程序)
这是我所拥有的:
class Editor: UIViewController, UIScrollViewDelegate {
let menuHeight = CGFloat(60)
var editor: LevelScrollView? = nil
var scrollProxy = UIScrollView()
override func viewDidLoad() {
let contentFrame = CGRectMake(0,menuHeight,self.view.frame.width,self.view.frame.height-menuHeight)
scrollProxy.delegate = self
scrollProxy.backgroundColor = UIColor.redColor()
scrollProxy.frame = contentFrame
scrollProxy.showsHorizontalScrollIndicator = false
scrollProxy.showsVerticalScrollIndicator = false
scrollProxy.bounces = false
let editor = LevelScrollView(reference: scrollProxy)
self.editor = editor
scrollProxy.addSubview(editor)
scrollProxy.contentSize = self.editor!.contentSize
scrollProxy.minimumZoomScale = 1.0
scrollProxy.zoomScale = scrollProxy.minimumZoomScale
scrollProxy.maximumZoomScale = 20.0
}
func scrollViewWillBeginZooming(scrollView: UIScrollView, withView view: UIView?) {
print("scrollViewWillBeginZooming")
}
func scrollViewDidEndZooming(scrollView: UIScrollView, withView view: UIView?, atScale scale: CGFloat) {
print("scrollViewDidEndZooming")
}
func scrollViewDidZoom(scrollView: UIScrollView) {
print("scrollViewDidZoom")
}
func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
return editor
}
}
几点说明:
- LevelScrollView 是一个 UIScrollView
- 我删除了一些与此问题无关的内容,请告诉我查看整个内容是否会有所帮助。
- 正在调用 viewForZoomingIn 委托函数,返回一个有效的 UIView(LevelScrollView),但无论我做什么,都不会调用其他三个。
由于这些原因,缩放不起作用。我将如何成功地做到这一点?
谢谢!
【问题讨论】:
-
所有缩放都是对缩放视图进行缩放转换(在您的示例中为
editor)。它不会神奇地说,“哦,这是一个滚动视图,他实际上想让我放大它too”。
标签: ios iphone uiview uiscrollview