在滚动后重置UICollectionViewCell中的滚动视图

问题描述:

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

内自定义单元格级,我设置ZoomScale每个单元格的滚动视图,当他们被启动,像这样:

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

我返回小区之前配置cellForItemAt功能每个单元格。

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

即使在从第二个单元格滚动回滚到第一个单元格之后,我怎样才能实现,滚动视图将被设置为默认缩放比例。

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

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

+0

这就像一个魅力。谢谢 –

首先让你的类符合

class profViewController: UIScrollViewDelegate 

由于UICollectionView是

其次实现这个委托方法

func scrollViewDidScroll(_ scrollView: UIScrollView) 
    { 

     let cd = areaSettTable.visibleCells as! 

     [profTableViewCell] 

     ////// 

     loop here 

    } 

然后通过这个数组循环,并调用该函数的UIScrollView

的子类,重置每个单元的缩放比例

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

+0

我已经想过这个问题,但我不知道它是做它,因为我通过每一个细胞都需要循环的最佳方式。我可能有很多细胞并且循环遍历所有细胞,但对于一个细胞似乎并不是最好的解决方案。 –

+0

循环将只针对可见细胞而不是所有表格视图的细胞 – ShKhan

+0

有多少个细胞会被视为可见细胞,是不是出现在屏幕外的细胞也包括在内? –