更改uicollectionviewlayout后的工件

时间:2013-08-25 14:09:48

标签: uiview calayer uicollectionview uicollectionviewcell uicollectionviewlayout

我正在使用此代码在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] indexpathed单元格设置为uicollectionview的背景。我怀疑这个层的东西搞砸了。查看调用堆栈看起来都很好。我看不到任何可能混乱图层的动画调用。

任何使这个无效的方法?什么可能导致它?

1 个答案:

答案 0 :(得分:0)

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

[self.collectionView performBatchUpdates:^{
            ***[self.collectionView.collectionViewLayout invalidateLayout];***
            [self.collectionView setCollectionViewLayout:self.horizontalPagingLayout animated:NO];
        } completion:^(BOOL finished) {
            [self.collectionView reloadData];
        }];