0

我正在使用此代码在 uicollectionview 中的布局之间切换

-(void)setHorizontalLayout:(BOOL)layout
{
    if (layout == YES)
    {

        [self.collectionView performBatchUpdates:^{
            [self.collectionView setCollectionViewLayout:self.horizontalPagingLayout animated:NO];
            [self.collectionView setPagingEnabled:YES];
            self.galleryInHorizontalScrollMode = YES;
        } completion:^(BOOL finished) {
            [self.collectionView reloadData];
        }];
    }
    else {


        [self.collectionView performBatchUpdates:^{

            [self.collectionView setCollectionViewLayout:self.galleryLayout animated:NO];
            self.galleryInHorizontalScrollMode = NO;
            [self.collectionView setPagingEnabled:NO];
        } completion:^(BOOL finished) {
            [self.collectionView reloadData];
        }];
    }

    return;
}

但是在我从一种布局更改为另一种布局后,我将 [0,0] 索引路径单元设置为 uicollectionview 的背景。我怀疑该层的某些东西搞砸了。查看调用堆栈看起来一切都很好。我看不到任何可能与图层混淆的动画调用。

有什么方法可以使这个无效吗?什么可能导致它?

4

1 回答 1

0

我不确定为什么会发生这种行为,但是当我在更改布局之前使布局无效时,一切都按预期工作:

[self.collectionView performBatchUpdates:^{
            ***[self.collectionView.collectionViewLayout invalidateLayout];***
            [self.collectionView setCollectionViewLayout:self.horizontalPagingLayout animated:NO];
        } completion:^(BOOL finished) {
            [self.collectionView reloadData];
        }];
于 2013-08-26T08:50:30.320 回答