我正在寫一個自定義的UICollectionViewFlowLayout
和我注意到,initialLayoutAttributesForAppearingItemAtIndexPath:
和initialLayoutAttributesForAppearingDecorationElementOfKind:atIndexPath:
將被用於所有的部分,當我在集合視圖調用performBatchUpdates:completion:
。結果是全部段都有應用到它們的動畫而不是只是的新增段落。UICollectionView performBatchUpdates:動畫所有部分
[collectionView performBatchUpdates:^{
currentModelArrayIndex++;
[collectionView insertSections:[NSIndexSet indexSetWithIndex:currentModelArrayIndex]];
[collectionView reloadSections:[NSIndexSet indexSetWithIndex:currentModelArrayIndex-1]];
} completion:^(BOOL finished) {
[collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:0 inSection:currentModelArrayIndex] atScrollPosition:UICollectionViewScrollPositionTop animated:YES];
}];
什麼我試過到目前爲止以代替簡單的更新移除調用performBatchUpdates:completion:
,但已有部分(全部)在動畫反正。我想出了一個檢查的解決方案,以確保我改變的佈局屬性最後一部分,但它感覺哈克。
if (decorationIndexPath.section == [(id<UICollectionViewDataSource>)self.collectionView.delegate numberOfSectionsInCollectionView:self.collectionView] - 1)
{
layoutAttributes.alpha = 0.0f;
layoutAttributes.transform3D = CATransform3DMakeTranslation(-CGRectGetWidth(layoutAttributes.frame), 0, 0);
}
這是適當的方式去動畫只有一些部分?