如何在 LayoutAttributesForDecorationView 中创建自定义布局属性?
How to create custom layout attributes in LayoutAttributesForDecorationView?
因为我需要更改装饰视图的背景颜色,所以我创建了 UICollectionViewLayoutAttributes
的子类。我唯一缺少的是创建布局属性。这就是我目前在 layoutAttributesForDecorationViewOfKind:atIndexPath:
:
中所做的
public override UICollectionViewLayoutAttributes LayoutAttributesForDecorationView (NSString kind, NSIndexPath indexPath)
{
CustomCollectionViewLayoutAttributes attribute = UICollectionViewLayoutAttributes.CreateForDecorationView (kind, indexPath) as CustomCollectionViewLayoutAttributes;
// ...
}
但它与 System.NullReferenceException
一起崩溃,因为 layoutAttributesForDecorationViewOfKind:withIndexPath:
returns null.
我是不是漏掉了什么?
我试过
CustomCollectionViewLayoutAttributes attribute = CustomCollectionViewLayoutAttributes.CreateForCell<CustomCollectionViewLayoutAttributes> (indexPath);
但我得到了
UICollectionView received layout attributes for a cell with an index path that does not exist
正确的方法应该是这样的
CustomCollectionViewLayoutAttributes attribute = CustomCollectionViewLayoutAttributes.CreateForDecorationView<CustomCollectionViewLayoutAttributes> (indexPath);
但它无法编译。
No overload for method 'CreateForDecorationView' takes '1' arguments.
这似乎是正确的方法:
CustomCollectionViewLayoutAttributes attribute = CustomCollectionViewLayoutAttributes.CreateForDecorationView<CustomCollectionViewLayoutAttributes>(kind, indexPath);
下次问问题之前我应该使用 IntelliSense 功能...
因为我需要更改装饰视图的背景颜色,所以我创建了 UICollectionViewLayoutAttributes
的子类。我唯一缺少的是创建布局属性。这就是我目前在 layoutAttributesForDecorationViewOfKind:atIndexPath:
:
public override UICollectionViewLayoutAttributes LayoutAttributesForDecorationView (NSString kind, NSIndexPath indexPath)
{
CustomCollectionViewLayoutAttributes attribute = UICollectionViewLayoutAttributes.CreateForDecorationView (kind, indexPath) as CustomCollectionViewLayoutAttributes;
// ...
}
但它与 System.NullReferenceException
一起崩溃,因为 layoutAttributesForDecorationViewOfKind:withIndexPath:
returns null.
我是不是漏掉了什么?
我试过
CustomCollectionViewLayoutAttributes attribute = CustomCollectionViewLayoutAttributes.CreateForCell<CustomCollectionViewLayoutAttributes> (indexPath);
但我得到了
UICollectionView received layout attributes for a cell with an index path that does not exist
正确的方法应该是这样的
CustomCollectionViewLayoutAttributes attribute = CustomCollectionViewLayoutAttributes.CreateForDecorationView<CustomCollectionViewLayoutAttributes> (indexPath);
但它无法编译。
No overload for method 'CreateForDecorationView' takes '1' arguments.
这似乎是正确的方法:
CustomCollectionViewLayoutAttributes attribute = CustomCollectionViewLayoutAttributes.CreateForDecorationView<CustomCollectionViewLayoutAttributes>(kind, indexPath);
下次问问题之前我应该使用 IntelliSense 功能...