我想让用户用一个手势选择多个单元格,如果所选单元格组成一个正确的单词,它将由一个永久绘制的线条表示,否则该线条将消失。
检查此图片示例:
和视频:https://youtu.be/wzuCo6q8xDY
我的第一种方法是使用UIPanGestureRecognizer ...但它只返回最后选择的单元格..
如何在CollectionView中绘制一条线并确定哪些单元格位于绘制线后面?
我整天都在想这个问题,并想知道是否有人有办法解决这个问题。
我很感激每一点帮助,谢谢你:)。
答案 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
}
}
}
}
在这种情况下,我只修改背景,但你可以根据需要进行修改。