Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 没有-LayoutAttributesForDecorrationViewOfKind的UICollectionViewLayoutAttributes实例_Ios_Objective C_Uicollectionview_Uicollectionreusableview - Fatal编程技术网

Ios 没有-LayoutAttributesForDecorrationViewOfKind的UICollectionViewLayoutAttributes实例

Ios 没有-LayoutAttributesForDecorrationViewOfKind的UICollectionViewLayoutAttributes实例,ios,objective-c,uicollectionview,uicollectionreusableview,Ios,Objective C,Uicollectionview,Uicollectionreusableview,我正在使用一个自定义布局,使用UICollectionReusableView的子类获得几个背景色部分。代码如下: - (void)prepareLayout { [super prepareLayout]; self.itemAttributes = [NSMutableArray new]; NSInteger numberOfSection = self.collectionView.numberOfSections; for (int section

我正在使用一个自定义布局,使用UICollectionReusableView的子类获得几个背景色部分。代码如下:

- (void)prepareLayout 
{
    [super prepareLayout];

    self.itemAttributes = [NSMutableArray new];
    NSInteger numberOfSection = self.collectionView.numberOfSections;
    for (int section = 0; section < numberOfSection; section++) {
        if (section == self.decorationViewOfKinds.count)
            break;

        NSString *decorationViewOfKind = self.decorationViewOfKinds[section % self.decorationViewOfKinds.count];
        if ([decorationViewOfKind isKindOfClass:[NSNull class]])
            continue;

        NSInteger lastIndex = [self.collectionView numberOfItemsInSection:section] - 1;
        if (lastIndex < 0)
        continue;

        UICollectionViewLayoutAttributes *firstItem = [self layoutAttributesForItemAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:section]];
        UICollectionViewLayoutAttributes *lastItem = [self layoutAttributesForItemAtIndexPath:[NSIndexPath indexPathForRow:lastIndex inSection:section]];

        CGRect frame = CGRectUnion(firstItem.frame, lastItem.frame);
        frame.origin.x -= self.sectionInset.top;
        frame.size.height += self.sectionInset.bottom;

        if (self.scrollDirection == UICollectionViewScrollDirectionHorizontal) {
            frame.size.width += self.sectionInset.left + self.sectionInset.right;
            frame.size.height = self.collectionView.frame.size.height;
        }
        else {
            frame.size.width = self.collectionView.frame.size.width;
            frame.size.height += self.sectionInset.top + self.sectionInset.bottom;
        }

        UICollectionViewLayoutAttributes *attributes = [UICollectionViewLayoutAttributes layoutAttributesForDecorationViewOfKind:decorationViewOfKind withIndexPath:[NSIndexPath indexPathForRow:0 inSection:section]];
        attributes.zIndex = -1;
        attributes.frame = frame;
        [self.itemAttributes addObject:attributes];
        [self registerNib:[UINib nibWithNibName:decorationViewOfKind bundle:[NSBundle mainBundle]] forDecorationViewOfKind:decorationViewOfKind];
    }
}

- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect
{
    NSMutableArray *attributes = [NSMutableArray arrayWithArray:[super layoutAttributesForElementsInRect:rect]];
    for (UICollectionViewLayoutAttributes *attribute in self.itemAttributes) {
        if (!CGRectIntersectsRect(rect, attribute.frame))
            continue;

        [attributes addObject:attribute];
    }

    return attributes;
}
-(无效)准备就绪
{
[超级准备];
self.itemtattributes=[NSMutableArray new];
NSInteger numberOfSection=self.collectionView.numberOfSections;
对于(int section=0;section
此代码有时在使用iOS 8.4.1的设备上崩溃:

致命异常:NSInternalInconsistencyException 路径{length=2,path=2-0}处没有-layouttributesfordecorationviewofkindofkindofkind:AlbumsSectionBackgroundDecorView的UICollectionViewLayoutAttribute实例

它不会发生在模拟器中,只会发生在使用iOS 8.4.1的设备中

有什么想法吗? 谢谢

编辑

该错误似乎是由于UICollectionView中的背压而发生的。我已经避免重新加载UICollectionView,并且似乎工作正常