滚动后在UICollectionViewCell中重置Scrollview

时间:2017-09-26 10:09:09

标签: ios swift uiscrollview uicollectionview

我正在使用this概念创建照片库。为了列出图像,我使用了UICollectionView。每个图像都存储在全屏大小的自定义单元格中。在单元格内部,我有UIScrollView,在里面我有UIImageView。 ScrollView用于缩放图像。一切正常,但是,当我放大一个图像并滚动到另一个单元格而不缩小时,我希望重置前一个单元格的滚动视图。

在自定义单元格类中,我为每个单元格的滚动视图设置了ZoomScale,如下所示:

func configureCell(_ photo: String){
    albumPhoto.image = UIImage(named: photo)
    scrollView.setZoomScale(1.0, animated: false)
}

在返回单元格之前,我在cellForItemAt函数中配置每个单元格。

当我放大第一个单元格时,滚动到第二个单元格并向后滚动回第一个单元格,图像仍然放大。但是如果我滚动到第二个和第三个单元格然后返回到第一个单元格,则图像被缩放出局默认。

即使在从第二个单元格立即向后滚动到第一个单元格后,如何实现该功能,滚动视图将设置为默认缩放比例。

2 个答案:

答案 0 :(得分:1)

首先让你的班级符合

class profViewController: UIScrollViewDelegate

由于UICollectionView是UIScrollView的子类

第二个实现这个委托方法

  func scrollViewDidScroll(_ scrollView: UIScrollView)
  { 

        let cd = areaSettTable.visibleCells as! 

       [profTableViewCell]

       //////

       loop here

  }
然后

循环遍历此数组并调用重置每个单元格的缩放的函数

注意:您应该将profTableViewCell名称更改为您的单元格

答案 1 :(得分:0)

您需要实施此方法:https://developer.apple.com/documentation/uikit/uicollectionviewdelegate/1618087-collectionview 并在显示单元格之前缩小scrollView。此方法将处理您的情况。快乐的编码;)

func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath)