所以我正在创建一个集合视图,在每个单元格的滚动中,集合视图背景变为我拥有的图像。问题是在单元格甚至在视图中之前的bg更改。我该如何解决这个问题?
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! HomeCollectionViewCell
cell.cellNavTitle.text = appConfig.menuItems[indexPath.row]
cell.cellNavImage.image = UIImage(named: (appConfig.icon[indexPath.row]))
cell.cellNavDescription.text = appConfig.title[indexPath.row]
switch indexPath.row{
case 0:
collectionView.backgroundColor = UIColor(patternImage: UIImage(named: "1414441938milaj_bg2")!)
break
case 1:
collectionView.backgroundColor = UIColor.blueColor()
break
case 2:
collectionView.backgroundColor = UIColor.grayColor()
break
default:
break
}
return cell
}
答案 0 :(得分:0)
您可以尝试使用此委托:
optional func collectionView(_ collectionView: UICollectionView,
willDisplayCell cell: UICollectionViewCell,
forItemAtIndexPath indexPath: NSIndexPath)
集合视图在向其添加单元格之前调用此方法 内容。使用此方法检测细胞添加,而不是 监控电池本身以查看它何时出现。
即
func collectionView(collectionView: UICollectionView,
willDisplayCell cell: UICollectionViewCell,
forItemAtIndexPath indexPath: NSIndexPath) {
switch indexPath.row{
case 0:
collectionView.backgroundColor = UIColor(patternImage: UIImage(named: "1414441938milaj_bg2")!)
break
case 1:
collectionView.backgroundColor = UIColor.blueColor()
break
case 2:
collectionView.backgroundColor = UIColor.grayColor()
break
default:
break
}
}
答案 1 :(得分:0)
如果matthias方法不起作用,请尝试使用滚动代理。您可以在哪里设置所需的精确高度,并根据需要更改背景。试试这个: - 把你的逻辑放在If条件下。在这里,我只设置一个检查滚动高度的逻辑。
func scrollViewDidScroll(scrollView: UIScrollView) {
let contentOffset: CGFloat = scrollView.contentOffset.y
if contentOffset < 500 {
collectionView.backgroundColor = UIColor(patternImage: UIImage(named: "1414441938milaj_bg2")!)
} else if contentOffset < 700 {
collectionView.backgroundColor = UIColor.blueColor()
} else if contentOffset < 900 {
collectionView.backgroundColor = UIColor.grayColor()
}
}
根据您的集合视图高度更改contentOffset值