2015-11-01 44 views
0

我试图完成一个场景,我可以放大UIScrollView。我已经看到,实现这个目标的最好方法是拥有一个全能的scrollView,它支持滚动,并且在其中有另一个UIScrollViewView(而不是内部具有UIImageView的普通应用程序)以另一个UIScrollView作为内容放大UIScrollView

这是我有:

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),但其他三个不会被调用,无论我做什么。

由于这些原因,缩放无法正常工作。我将如何成功完成此任务?

谢谢!

+1

所有缩放都是对缩放视图进行缩放转换(在您的示例中为“编辑器”)。它不会神奇地说,“哦,这是一个滚动视图,他实际上想让我缩放它。” – matt

回答

0

我能够找到的唯一解决方案是将整个滚动视图嵌入到单独的UIView中,然后启用缩放。