我正在寻找一种方法,当您滚动到collectionView的另一个单元格时,可以在imageView中更改图像。
因此,在滚动单元格(1)时,我想更改图像(2)。
创建此内容的最佳方法是什么?
我已经做了很多研究,但从未找到解决方案。
答案 0 :(得分:0)
UICollectionView
是UIScrollView
的子类,所以
collectionView.delegate = self
UIScrollViewDelegate
现在像这样实现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)
}
在上面的代码中,我们将为您的collectionView
提供可见的项目。
现在,您可以使用此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(文件系统或网络调用),我强烈建议使用大量缓存(如果是这种情况,请考虑使用KingFisher或SDWebImage)。