集合视图中的背景问题

时间:2015-11-17 17:04:38

标签: ios swift uicollectionview

所以我正在创建一个集合视图,在每个单元格的滚动中,集合视图背景变为我拥有的图像。问题是在单元格甚至在视图中之前的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       
}

2 个答案:

答案 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值