2016-09-19 127 views
0

我试图实现一个图像视图,该图像视图可以放大并且还有文字滚动到顶部。在我的视图控制器中,我有一个包含图像视图的滚动视图,并设置为放大而没有问题。只传递一些触摸事件从一个视图到另一个视图

class ViewController: UIViewController, UIScrollViewDelegate { 

    @IBOutlet weak var imageView: UIImageView! 
    @IBOutlet weak var scrollView: UIScrollView! 


    //First try getting the image setup correctly 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     setupImageView() 

    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 

    func setupImageView() { 

     scrollView.contentSize = imageView.bounds.size 
     scrollView.minimumZoomScale = 0.5 
     scrollView.maximumZoomScale = 2.0 

    } 

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


    func scrollViewDidZoom(scrollView: UIScrollView) { 

     let imageViewSize = imageView.frame.size 
     let scrollViewSize = scrollView.bounds.size 

     let verticalPadding = imageViewSize.height < scrollViewSize.height ? (scrollViewSize.height - imageViewSize.height)/2 : 0 
     let horizontalPadding = imageViewSize.width < scrollViewSize.width ? (scrollViewSize.width - imageViewSize.width)/2 : 0 

     scrollView.contentInset = UIEdgeInsets(top: verticalPadding, left: horizontalPadding, bottom: verticalPadding, right: horizontalPadding) 
    } 


} 

现在我想将另一个滚动视图的顶部,这样的文字标签可以,如果一拖再拖滚动,但图像仍然可以捏和缩放当它被触及。我将另一个滚动视图放在图像顶部(不在里面),然后在内部放置一个内容视图和UILabel,正如我在IB中设置滚动视图时通常所做的那样。

override func pointInside(point: CGPoint, withEvent event: UIEvent?) -> Bool { 
     for subview in subviews as [UIView] { 
      if !subview.hidden && subview.alpha > 0 && subview.userInteractionEnabled && subview.pointInside(convertPoint(point, toView: subview), withEvent: event) { 
       return true 
      } 
     } 
     return false 
    } 

​​

这传递触摸到下面的滚动型:当然卷轴但是图像不会捏和缩放,除非我两个子类的内容视图顶部滚动视图与文本。但是现在我无法滚动文本!有没有什么办法可以设置这个,所以测试的UILabel没有通过触摸,可以滚动,但外部通过并允许图像缩放?任何指针都会非常感谢!

回答

0

ScrollView黑客攻击并不总是最直观的过程。但是在这种情况下,为什么不让你的UIViewController执行UIScrollViewDelegate协议并使用内置的zoomFeature中的UIScrollview

设置minimumZoomScalemaximumZoomScaleUIScrollView ,让您的scrollViewDelegate实现以下功能并返回imageViewzoom

API参考 - UIScrollView - UIScrollViewDelegate

+0

我使用内置缩放图像的第一个滚动视图。对于我想要滚动的文本,图像顶部有第二个滚动视图。我想传递触摸,以便缩放下方的滚动视图,但在触摸文本时不会传递它们,因此文本可以滚动。 – Kex

相关问题