2

我试图decoration view在 UIViewController 的每一行后面显示一个。

每个“行”有 3 UICollectionViewCells。我想通过三个单元格行后面的装饰视图显示背景。

viewDidLoad:我注册装饰视图:

[self.collectionView.collectionViewLayout registerClass:[CollectionRowDecorationView class] forDecorationViewOfKind:@"RowDecorationView"];

我还设置了以下委托方法:

- (UICollectionViewLayoutAttributes *)layoutAttributesForDecorationViewOfKind:(NSString *)decorationViewKind atIndexPath:(NSIndexPath *)indexPath
{
    UICollectionViewLayoutAttributes *layoutAttributes = [UICollectionViewLayoutAttributes layoutAttributesForDecorationViewOfKind:decorationViewKind withIndexPath:indexPath];
    layoutAttributes.frame = CGRectMake(0.0, 0.0, self.collectionView.contentSize.width, self.collectionView.contentSize.height);
    layoutAttributes.zIndex = -1;
    return layoutAttributes;
}

不幸的是,委托方法没有被调用。阅读文档后,我不是 100% 清楚我需要做什么才能初始化装饰视图?看起来我缺少另一个需要调用的委托方法才能正确设置所有内容。

谢谢!

4

1 回答 1

1

您需要- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect像这样添加装饰视图:

[attributesArray addObject:[self layoutAttributesForDecorationViewOfKind:@"BackgroundView" atIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]]];
于 2012-11-13T13:38:18.017 回答