我想在添加UICollectionView之后添加自定义UIView,因为我想在集合视图上方显示自定义栏视图。这是我的代码:
func loadFilters() {
let categoriesFlowLayout = UICollectionViewFlowLayout()
categoriesFlowLayout.scrollDirection = .vertical
categoriesCollection = UICollectionView(frame: CGRect(x: 10, y: getY(yAxis: searchField) + 10, width: view.frame.size.width - 20, height: (view.frame.size.height * 9 / 10) - getY(yAxis: searchField) - 10), collectionViewLayout: categoriesFlowLayout)
categoriesCollection.register(categoriesCell.self, forCellWithReuseIdentifier: "categoriesCell")
categoriesCollection.delegate = self
categoriesCollection.dataSource = self
categoriesCollection.backgroundColor = UIColor.clear
categoriesCollection.showsVerticalScrollIndicator = false
categoriesCollection.showsHorizontalScrollIndicator = false
view.addSubview(categoriesCollection)
addBar()
categoriesCollection.isUserInteractionEnabled = true
}
addBar()
函数在自定义超类ViewController中声明
如果addBar()
在view.addSubview(categoriesCollection)
之前被调用,则看起来像下面的图像,但是如果在sendSubviewToBack()
之后被调用,则我的收藏视图无法滚动或识别触摸。无论如何,是否会使收藏夹视图滚动并使自定义栏显示在最前面?
我也使用过bringSubviewToFront()
和useEffect()
函数,但是结果是一样的
答案 0 :(得分:0)
在另一个视图上方插入一个视图时,顶视图将获得所有触摸事件。因此,UICollectionView
不再接收任何触摸事件,因为它上面有另一个视图。
正如我从您的帖子中看到的那样,您只需要屏幕底部的栏即可。因此,请检查自定义UIView
的大小。它可能会填满整个屏幕,并且完全位于UICollectionView
上方。只需为UIView
提供某种背景色,然后看看它可以填充多少空间即可。
如果这不起作用,则可以在自定义UIGestureRecognizer
上使用UIView
并将触摸事件转发到UICollectionView
。