【问题标题】:Change image outside collectionView when scrolling the collectionView cells滚动collectionView单元格时更改collectionView外部的图像
【发布时间】:2019-01-11 22:17:14
【问题描述】:

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

所以当滚动单元格的(1)我想改变图像(2)。

创建这个的最佳方法是什么?

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

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    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)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多