Swift - 实现多个滚动视图

Swift - Implementing multiple scrollViews

我正在创建一个相册应用程序,其中一个页面应该包含多个 imageView,每个图像视图都在一个 scrollView 中,因此放置在页面中的每个图像都可以滚动和缩放(有点像 Instagram 的布局)。 实现这个的最佳方法是什么?使用 CollectionView 似乎有点复杂,因为空间可能会有所不同,具体取决于所选模板,但是当我尝试使用多个滚动视图时,我在委托 viewForZooming 函数中引用每个滚动视图时遇到了麻烦。我试过使用滚动视图数组,但没有调用委托函数。

func drawPage(pageID: Int) {

    var tempImagesArray = [UIImage]()
    var tempImageLocationsArray: [CGRect] = []

    var scrollView: UIScrollView!
    var imageView = UIImageView()

    if pageID == 1 {
        tempImagesArray = imagesArrayLeft
        tempImageLocationsArray = imageLocationsArrayLeft
    }
    else {
        tempImagesArray = imagesArrayRight
        tempImageLocationsArray = imageLocationsArrayRight
    }

    for i in 0...tempImagesArray.count - 1 {

        scrollView = UIScrollView(frame: tempImageLocationsArray[i])
        scrollView.delegate = self

        let image = tempImagesArray[i]
        imageView.image = image
        imageView.frame = tempImageLocationsArray[i]
        scrollView.addSubview(imageView)
        scrollView.contentSize = image.size
        scrollView.clipsToBounds = true
        scrollView.layer.borderColor = UIColor.white.cgColor
        scrollView.layer.borderWidth = 4.0

        let scrollViewFrame = scrollView.frame
        let scaleWidth = scrollViewFrame.size.width / scrollView.contentSize.width
        let scaleHeight = scrollViewFrame.size.height / scrollView.contentSize.height
        let minScale = min(scaleWidth, scaleHeight)
        scrollView.minimumZoomScale = 1.0

        scrollView.maximumZoomScale = 4.0
        scrollView.zoomScale = minScale

        scrollViewsArray.append(scrollView)
        imageViewsArray.append(imageView)

        scrollViewsArray[scrollViewsArray.count - 1].delegate = self

        self.pageFrameView.addSubview(scrollView)

    }
}

委托函数:

func viewForZooming(in scrollView: UIScrollView) -> UIView? {

    if scrollViewsArray.count > 0 {
        if scrollView == scrollViewsArray[0] {
            return self.imageViewsArray[0]
        }
        else {
            return self.imageViewsArray[0]
            }
    }

    return nil

}

抱歉!!!但是你的问题理解起来有点复杂。目前,我建议您最好的是,为每个滚动视图使用标记,而不是将它们放在数组 中。

Regards, Code Blizzard