访问collectionView单元格可见/不可见

时间:2018-11-06 06:53:55

标签: swift3 uicollectionview swift4 uicollectionviewcell didselectrowatindexpath

我有一个功能可以翻转集合视图单元格,效果很好。我的问题是我想翻转所有单元格,而不仅是这个可见单元格,因此当我滑动到下一个单元格时,它将被翻转。

这就是我用来翻转一个可见单元格的东西。任何在正确方向上的帮助将不胜感激。

func flipAction() {
        let visibleRect = CGRect(origin: mainCollecView.contentOffset, size: mainCollecView.bounds.size)
        let visiblePoint = CGPoint(x: visibleRect.midX, y: visibleRect.midY)
        let visibleIndexPath = mainCollecView.indexPathForItem(at: visiblePoint)
        let cell = mainCollecView.cellForItem(at: visibleIndexPath!) as! MainCollectionViewCell

if cell.isFlipped == false {
       //Flip card
        cell.flip()
        cell.isFlipped = true
        flipBtn.setImage(UIImage(named: "reversed"), for: .normal)

    } else {
        // Flip the card back
        flipBtn.setImage(UIImage(named: "Calendar"), for: .normal)
        cell.flipBack()
        cell.isFlipped = false
    }
   }

1 个答案:

答案 0 :(得分:0)

您可以使用不同的方法。但是,如果您希望所有内容都被翻转,请在您的Class中使用一个变量,例如

      var isFlipped:Bool = false 

现在在您的功能内部:

      flipAction() {
           isfliped =  !isfliped
           mycollection.reload() //where mycollection is yours 
      }

然后进入您的

     func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
     {
       if isfliped == false {
             // your code for cell when is not flipped 
       } else  {
             //your code for cell when is flipped
       } 

这样,所有单元格将立即翻转或不翻转,而不取决于它们是否可见。