我正在使用this概念创建照片库。为了列出图像,我使用了UICollectionView。每个图像都存储在全屏大小的自定义单元格中。在单元格内部,我有UIScrollView,在里面我有UIImageView。 ScrollView用于缩放图像。一切正常,但是,当我放大一个图像并滚动到另一个单元格而不缩小时,我希望重置前一个单元格的滚动视图。
在自定义单元格类中,我为每个单元格的滚动视图设置了ZoomScale,如下所示:
func configureCell(_ photo: String){
albumPhoto.image = UIImage(named: photo)
scrollView.setZoomScale(1.0, animated: false)
}
在返回单元格之前,我在cellForItemAt
函数中配置每个单元格。
当我放大第一个单元格时,滚动到第二个单元格并向后滚动回第一个单元格,图像仍然放大。但是如果我滚动到第二个和第三个单元格然后返回到第一个单元格,则图像被缩放出局默认。
即使在从第二个单元格立即向后滚动到第一个单元格后,如何实现该功能,滚动视图将设置为默认缩放比例。
答案 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)