Swift - 实现多个scrollView

时间:2017-03-30 06:38:09

标签: swift3 scrollview

我正在创建一个相册应用,其中一个页面应该包含多个imageView,每个都在一个scrollView中,因此放置在页面中的每个图像都可以滚动和缩放(有点像Instagram的布局)。 实现这个的最佳方法是什么?使用CollectionView看起来有点复杂,因为空间可能会有所不同,基于所选的模板,但是当我尝试使用多个scrollViews时,我在代理viewForZooming函数中引用了每个问题。我尝试使用scrollViews数组,但没有调用委托函数。

Page layout example

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

}

1 个答案:

答案 0 :(得分:1)

SORRY !!!但你的问题有点复杂。我现在建议你最好的是每个滚动视图的USE标记,而不是将它们放在数组中

  

此致   Code Blizzard