我正在使用此代码在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的背景。我怀疑这个层的东西搞砸了。查看调用堆栈看起来都很好。我看不到任何可能混乱图层的动画调用。
任何使这个无效的方法?什么可能导致它?
答案 0 :(得分:0)
我不确定为什么会出现这种情况,但是当我在更改布局之前使布局无效时,一切都按预期工作:
[self.collectionView performBatchUpdates:^{
***[self.collectionView.collectionViewLayout invalidateLayout];***
[self.collectionView setCollectionViewLayout:self.horizontalPagingLayout animated:NO];
} completion:^(BOOL finished) {
[self.collectionView reloadData];
}];