动画 UICollectionViewCell:同时滚动和调整大小
Animating a UICollectionViewCell: Scroll To And Resize At The Same Time
我试图让 UICollectionViewCell 进行动画调整大小,同时让集合视图将单元格滚动到集合视图视口的顶部。
当我做的时候
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
[self.collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionTop animated:YES];
[collectionView performBatchUpdates:nil completion:nil];
}
和
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionViewCell *cell = [self.collectionView cellForItemAtIndexPath:indexPath];
if (cell.isSelected) {
return self.collectionView.frame.size;
}
else {
return CGSizeMake(300, 100);
}
}
滚动发生在调整大小动画之前。
如果我在 performBatchUpdates 中调用 scrollToItemAtIndexPath,比如
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
[collectionView performBatchUpdates:^{
[self.collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionTop animated:YES];
} completion:nil];
}
大部分时间都不起作用。
谢谢!
-埃里克
实现这种效果的最佳方法是简单地继承 UICollectionViewFlowLayout 并根据所选单元格调整单元格布局属性。
我试图让 UICollectionViewCell 进行动画调整大小,同时让集合视图将单元格滚动到集合视图视口的顶部。
当我做的时候
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
[self.collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionTop animated:YES];
[collectionView performBatchUpdates:nil completion:nil];
}
和
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionViewCell *cell = [self.collectionView cellForItemAtIndexPath:indexPath];
if (cell.isSelected) {
return self.collectionView.frame.size;
}
else {
return CGSizeMake(300, 100);
}
}
滚动发生在调整大小动画之前。
如果我在 performBatchUpdates 中调用 scrollToItemAtIndexPath,比如
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
[collectionView performBatchUpdates:^{
[self.collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionTop animated:YES];
} completion:nil];
}
大部分时间都不起作用。
谢谢!
-埃里克
实现这种效果的最佳方法是简单地继承 UICollectionViewFlowLayout 并根据所选单元格调整单元格布局属性。