如何添加捏缩放到水平scrollView?

时间:2015-11-05 14:51:52

标签: swift uiscrollview

我有一个水平scrollView

@IBOutlet weak var scrollView: UIScrollView! 

override func viewDidLoad() {

    for image in imageArray {
       let imageView = UIImageView(image: image)
       scrollView.addSubview(imageView)
       imageViews.append(imageView)
    }

}

override func viewDidLayoutSubviews() {


    for (index,imageView) in imageViews.enumerate() {
        imageView.frame = CGRectMake(CGFloat(index)*scrollView.frame.size.width, 0, scrollView.frame.size.width, scrollView.frame.size.height)
    }

    let imageArrayCount = CGFloat(imageArray.count)

    scrollView.contentSize = CGSizeMake(scrollView.frame.size.width *  imageArrayCount, scrollView.frame.size.height)

}

如何修改它以使方法viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView?有效?方法描述说,我需要视图,它将被缩放,但我不明白如何在scrollview中嵌入新视图。

1 个答案:

答案 0 :(得分:1)

函数viewForZoomingInScrollView(_:)应该返回将用于缩放的一个 UIView(此视图的比例将被更改)。因此,您必须将所有图像放入一个视图中,并将视图添加到滚动视图中。

这是你需要做的缩放工作:

为容器视图添加属性:

class YourViewControllerClass: UIViewController {
    let imagesContainerView = UIView()
    ...
}

将所有图像视图添加到此容器视图,并将容器视图添加到滚动视图:

scrollView.addSubview(imagesContainerView)
view.addSubview(scrollView)

for image in imageArray {
    let imageView = UIImageView(image: image)
    imagesContainerView.addSubview(imageView)
    imageViews.append(imageView)
}

为滚动视图设置contentSize后,相应地设置容器视图的框架:

imagesContainerView.frame = CGRectMake(0, 0, scrollView.contentSize.width, scrollView.contentSize.height)

通过在滚动视图上设置最大和最小缩放比例启用缩放并设置代理:

scrollView.maximumZoomScale = 5.0
scrollView.minimumZoomScale = 1
scrollView.delegate = self

实施委托方法:

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