Ios UICollectionViewCell在滚动时通过动画删除空间

Ios UICollectionViewCell在滚动时通过动画删除空间,ios,objective-c,swift,Ios,Objective C,Swift,我对UICollectionViewCell设计布局有问题。我需要在UICollectionView单元格之间滚动时用动画删除空格,我尝试了UICollectionView的一些委托方法,如- 集合视图-分段索引的最小行间距 CollectionView-分区索引的最小标识符间距 UIEdgeInsetsMake(0,0,0,0) ScrollViewDiEndDraging 但无法达到标准。代码如下: - (CGSize)collectionView:(UICollectionView

我对UICollectionViewCell设计布局有问题。我需要在UICollectionView单元格之间滚动时用动画删除空格,我尝试了UICollectionView的一些委托方法,如-

  • 集合视图-分段索引的最小行间距
  • CollectionView-分区索引的最小标识符间距
  • UIEdgeInsetsMake(0,0,0,0)
  • ScrollViewDiEndDraging
但无法达到标准。代码如下:

  - (CGSize)collectionView:(UICollectionView *)collectionView
              layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
  {
    CGRect screenRect = [[UIScreen mainScreen] bounds];
    CGFloat screenWidth = screenRect.size.width;
    float cellWidth = screenWidth / 2.1; //Replace the divisor with the column count requirement. Make sure to have it in float.
    CGSize size = CGSizeMake(cellWidth, cellWidth);

    return size;
 }

  - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section 
 {
    return 1.0;
 }

 - (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section 
 {
   return 1.0;
 }

 // Layout: Set Edges
 - (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section 
 {
   return UIEdgeInsetsMake(0,0,0,0);  // top, left, bottom, right
 }

 - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
 {
   UIEdgeInsetsMake(0,0,0,0); // after scroll cell space not remove. 
 }

我不完全理解您想做什么,但是如果您想更改集合视图的布局属性并设置更改的动画,最好的方法是调用
setLayout:animated:

所以像这样——

UICollectionViewFlowLayout *layout = [UICollectionViewFlowLayout alloc] init];
layout.minimumLineSpacing = 1.0;
layout.minimumInteritemSpacing = 1.0;
layout.itemSize = CGSizeMake(cellWidth, cellHeight);

UICollectionView *collectionView = [[UICollectionView alloc] initWithFrame:frame collectionViewLayout:layout]
然后,无论何时您想要更改它,只要调用
setLayout:animated:
方法:

UICollectionViewFlowLayout *layout = [UICollectionViewFlowLayout alloc] init];
initialLayout.minimumLineSpacing = 5.0;
initialLayout.minimumInteritemSpacing = 7.0;
layout.itemSize = CGSizeMake(newCellWidth, newCellHeight);

[collectionView setLayout:layout animated:YES];  

我不完全理解您想做什么,但是如果您想更改集合视图的布局属性并设置更改的动画,最好的方法是调用
setLayout:animated:

所以像这样——

UICollectionViewFlowLayout *layout = [UICollectionViewFlowLayout alloc] init];
layout.minimumLineSpacing = 1.0;
layout.minimumInteritemSpacing = 1.0;
layout.itemSize = CGSizeMake(cellWidth, cellHeight);

UICollectionView *collectionView = [[UICollectionView alloc] initWithFrame:frame collectionViewLayout:layout]
然后,无论何时您想要更改它,只要调用
setLayout:animated:
方法:

UICollectionViewFlowLayout *layout = [UICollectionViewFlowLayout alloc] init];
initialLayout.minimumLineSpacing = 5.0;
initialLayout.minimumInteritemSpacing = 7.0;
layout.itemSize = CGSizeMake(newCellWidth, newCellHeight);

[collectionView setLayout:layout animated:YES];  

放一些你正在使用的代码。放一些你正在使用的代码。