我在为UICollectionViewCell
和UICollectionReusableView
对象设置背景颜色时遇到问题。它在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上,所有单元格都具有白色背景。
答案 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上它将是白色背景。