如何在UICollectionView中绘制一条线?
问题描述:
我想让用户用一个手势选择多个单元格,如果选定的单元格组成一个正确的单词,它将由一个永久绘制线表示,否则该线将消失。如何在UICollectionView中绘制一条线?
检查这个形象的例子:
和视频:https://youtu.be/wzuCo6q8xDY
我的第一个方法是使用一个UIPanGestureRecognizer ......但它只返回最后选定单元格..
如何在CollectionView中绘制一条线并确定绘制线后面的单元格?
我一整天都在想这个问题,想知道是否有人有办法解决这个问题。
我是帮助每一个微小的一点感激,谢谢:)
答
最简单的方法来完成,这将是使用UIPanGestureRecognizer到您的收藏观。
collectionView.gestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(handlePan(gesture:))))
的handlePan(手势:)方法是这样的:
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
}
}
}
}
在这种情况下,我只修改背景,但可以根据需要进行修改。
因为我*不*认为*就是*一个UICollectionView。至少,我认为在它检测触摸之前有一个清晰的背景UIView。也许更多的逻辑,但(1),这不是一个“线”,和(2)你如何做一个阿尔法减少的触摸平移*不*改变每个单元格的背景颜色 - 换句话说,一个CGRect - 看起来像那样。 – dfd
为什么你为此使用集合视图?你会如何区分滚动和选择? –