UICollectionView - iOS 6上的单元格背景颜色

时间:2014-05-11 21:33:59

标签: ios ios6 uicollectionview uicollectionviewcell

我在为UICollectionViewCellUICollectionReusableView对象设置背景颜色时遇到问题。它在iOS 7上没有问题,但在iOS 6上,我得到的只是白色背景。

在我的UICollectionView数据源中,我在此方法中设置背景颜色:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath

此代码仅适用于iOS 7:

cell.contentView.backgroundColor = [UIColor redColor];

这就是我已经尝试使它适用于iOS 6:

UIColor *backgroundColor = [UIColor redColor];
cell.backgroundColor = backgroundColor;
cell.backgroundView = [[UIView alloc] initWithFrame:cell.bounds];
cell.backgroundView.backgroundColor = backgroundColor;
cell.layer.backgroundColor = [backgroundColor CGColor];
cell.backgroundView.layer.backgroundColor = [backgroundColor CGColor];
cell.contentView.layer.backgroundColor = [backgroundColor CGColor];

不幸的是,没有成功。我很困惑,真的不知道我在这里缺少什么。

除了这个问题,其他一切都按预期工作,我的UICollectionView在iOS 7以及iOS 6上正确显示单元格。

我正在使用的代码可以在GitHub上获得,作为我所创建的库的一部分。如果您需要有关我的实施的更多信息,请在此处查看:DRCollectionViewTableLayout-iOS。存储库包含带有UICollectionView的演示项目。在iOS 7上,单元格具有随机颜色,在iOS 6上,所有单元格都具有白色背景。

2 个答案:

答案 0 :(得分:0)

试试这个:

[cell setBackgroundColor:[UIColor redColor]];

<强>更新

cell.contentView.backgroundColor = [UIColor redColor];

答案 1 :(得分:0)

解决。这完全是我的错误。我UICollectionView中的每个单元格和补充视图都有一个UILabel,它填充了它的框架。在iOS 7上UILabel默认情况下具有清晰的背景颜色,但在iOS 6上,默认背景颜色为白色。所以,我能够使用这种方法在iOS 6上正确设置背景颜色:

cell.contentView.backgroundColor = [UIColor redColor];

但是因为在单元格顶部有一个带有白色背景的UILabel,所以单元格的背景颜色不可见。愚蠢的错误,但我认为最好记住,当你以编程方式创建新的UILabel时,在iOS 7上它将具有清晰的背景,但在iOS 6上它将是白色背景。