滚动collectionView单元格时在collectionView外部更改图像

时间:2019-01-11 22:17:14

标签: ios swift

我正在寻找一种方法,当您滚动到collectionView的另一个单元格时,可以在imageView中更改图像。

myimage

因此,在滚动单元格(1)时,我想更改图像(2)。

创建此内容的最佳方法是什么?

我已经做了很多研究,但从未找到解决方案。

1 个答案:

答案 0 :(得分:0)

UICollectionViewUIScrollView的子类,所以

  1. 首先将 collectionView 的委托设置为您的 ViewController collectionView.delegate = self
  2. 现在将您的 ViewController 设置为符合UIScrollViewDelegate
  3. 现在像这样实现scrollViewDidScroll

    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        let visibleRect = CGRect(origin: collectionView.contentOffset, size: collectionView.bounds.size)
        let visiblePoint = CGPoint(x: visibleRect.midX, y: visibleRect.midY)
        let visibleIndexPath = collectionView.indexPathForItem(at: visiblePoint)
    }
    
  4. 在上面的代码中,我们将为您的collectionView提供可见的项目。

  5. 现在,您可以使用此visibleIndexPath更新外部图像。

    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        let visibleRect = CGRect(origin: collectionView.contentOffset, size: collectionView.bounds.size)
        let visiblePoint = CGPoint(x: visibleRect.midX, y: visibleRect.midY)
        let visibleIndexPath = collectionView.indexPathForItem(at: visiblePoint)
        outerImageView.image = UIImage(named: outerImageNames[visibleIndexPath.row])
    }
    

这里outerImageView是指您的外部图片,而outerImageNames是由图片名称字符串组成的数组

我假设外部UIImageView的图像会出现在您的广告包中。但是,如果图像来自其他来源,则可以调整图像设置逻辑。如果图像来自异步API(文件系统或网络调用),我强烈建议使用大量缓存(如果是这种情况,请考虑使用KingFisherSDWebImage)。