UICollectionView重新排序

时间:2015-09-23 10:03:21

标签: ios objective-c uitableview ios9

iOS9为UICollectionView实现了一个很好的重新排序功能。

在我的CollectionViewController中,我实现了以下代码以使其工作:

- (void)collectionView:(UICollectionView *)collectionView moveItemAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath 
{
    _cells[sourceIndexPath.row][1] = [NSString stringWithFormat:@"%li", (long)destinationIndexPath.row];
    _cells[destinationIndexPath.row][1] = [NSString stringWithFormat:@"%li", (long)sourceIndexPath.row];
    [self saveCellorder];
}

'cells'数组就是为了保存视图中单元格的顺序

-

现在问题/问题:

我在CollectionView中有两个不同大小的单元格,当我将一个小单元格拖到一个小单元格上时,它们会改变它们的位置,一切正常。当我将一个大细胞拖到一个大细胞上时也会发生同样的情况。

但是当我将一个小细胞拖过一个大细胞时,大细胞变小,小细胞变大。 我怎样才能防止细胞改变它们的大小?

1 个答案:

答案 0 :(得分:1)

我想,你已经实施了委托方法-collectionView:layout:sizeForItemAtIndexPath:。严格来说,此方法不返回单元格的大小。它返回指定位置的单元格大小。因此,当集合视图顺序发生变化并以某种方式响应时,您应该抓住时刻,告诉-collectionView:layout:sizeForItemAtIndexPath:返回正确的大小。

或者,您可以简单地实现自行调整大小集合视图单元格。看一下WWDC 2014“表和集合视图中的新功能”。很容易惊人的©

有关自行调整单元格的更多信息:SO answer