我如何在UICollectionView中画一条线?

时间:2017-04-06 22:59:04

标签: ios swift

我想让用户用一个手势选择多个单元格,如果所选单元格组成一个正确的单词,它将由一个永久绘制的线条表示,否则该线条将消失。

检查此图片示例:

和视频:https://youtu.be/wzuCo6q8xDY

我的第一种方法是使用UIPanGestureRecognizer ...但它只返回最后选择的单元格..

如何在CollectionView中绘制一条线并确定哪些单元格位于绘制线后面?

我整天都在想这个问题,并想知道是否有人有办法解决这个问题。

我很感激每一点帮助,谢谢你:)。

1 个答案:

答案 0 :(得分:1)

实现这一目标的最简单方法是将UIPanGestureRecognizer用于集合视图。

collectionView.gestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(handlePan(gesture:))))

handlePan(gesture :)方法如下:

func handlePan(gesture: UIPanGestureRecognizer){
    let indexPath = collectionView.indexPathForItem(at: gesture.location(in: collectionView))

    if let index = indexPath {

        collectionView.selectItem(at: index, animated: true, scrollPosition: UICollectionViewScrollPosition())

    }

}

不要忘记在collectionView中允许多项选择:

collectionView.allowsMultipleSelection = true

您还可以覆盖UICollectionViewCell中的isSelect属性:

class CustomCell: UICollectionViewCell {

    override var isSelected: Bool {
        didSet {
            if isSelected {
                backgroundColor = .green
            } else {
                backgroundColor = .blue
            }
        }
    }

}

在这种情况下,我只修改背景,但你可以根据需要进行修改。