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中有两个不同大小的单元格,当我将一个小单元格拖到一个小单元格上时,它们会改变它们的位置,一切正常。当我将一个大细胞拖到一个大细胞上时也会发生同样的情况。
但是当我将一个小细胞拖过一个大细胞时,大细胞变小,小细胞变大。 我怎样才能防止细胞改变它们的大小?
答案 0 :(得分:1)
我想,你已经实施了委托方法-collectionView:layout:sizeForItemAtIndexPath:
。严格来说,此方法不返回单元格的大小。它返回指定位置的单元格大小。因此,当集合视图顺序发生变化并以某种方式响应时,您应该抓住时刻,告诉-collectionView:layout:sizeForItemAtIndexPath:
返回正确的大小。
或者,您可以简单地实现自行调整大小集合视图单元格。看一下WWDC 2014“表和集合视图中的新功能”。很容易惊人的©
有关自行调整单元格的更多信息:SO answer