Ios UICollectionView移动项目并保持单元格大小
我有不同大小的单元格,我正在尝试移动CollectionView单元格,并将移动/选定的单元格大小移动到新位置 我已经在Github上公开了,如果你想成为合作者,请告诉我 我正在对UICollectionViewFlowLayout进行子分类,并实现了以下功能:Ios UICollectionView移动项目并保持单元格大小,ios,objective-c,uicollectionview,Ios,Objective C,Uicollectionview,我有不同大小的单元格,我正在尝试移动CollectionView单元格,并将移动/选定的单元格大小移动到新位置 我已经在Github上公开了,如果你想成为合作者,请告诉我 我正在对UICollectionViewFlowLayout进行子分类,并实现了以下功能: - (UICollectionViewLayoutInvalidationContext *)invalidationContextForInteractivelyMovingItems:(NSArray<NSIndexPath
- (UICollectionViewLayoutInvalidationContext *)invalidationContextForInteractivelyMovingItems:(NSArray<NSIndexPath *> *)targetIndexPaths withTargetPosition:(CGPoint)targetPosition previousIndexPaths:(NSArray<NSIndexPath *> *)previousIndexPaths previousPosition:(CGPoint)previousPosition{
UICollectionViewLayoutInvalidationContext *context = [super
invalidationContextForInteractivelyMovingItems:targetIndexPaths
withTargetPosition:targetPosition
previousIndexPaths:previousIndexPaths
previousPosition:previousPosition];
[self.collectionView moveItemAtIndexPath:previousIndexPaths[0] toIndexPath:targetIndexPaths[0]];
return context;
}
您知道如何保持大小吗?我遇到了相同的问题,原因是您需要调用代理的moveItemAtIndexPath
- (UICollectionViewLayoutInvalidationContext *)invalidationContextForInteractivelyMovingItems:(NSArray<NSIndexPath *> *)targetIndexPaths withTargetPosition:(CGPoint)targetPosition previousIndexPaths:(NSArray<NSIndexPath *> *)previousIndexPaths previousPosition:(CGPoint)previousPosition{
UICollectionViewLayoutInvalidationContext *context = [super
invalidationContextForInteractivelyMovingItems:targetIndexPaths
withTargetPosition:targetPosition
previousIndexPaths:previousIndexPaths
previousPosition:previousPosition];
[self.collectionView.dataSource collectionView:self.collectionView moveItemAtIndexPath:previousIndexPaths[0] toIndexPath:targetIndexPaths[0]];
return context;
}
-(UICollectionViewLayoutInvalidationContext*)无效上下文用于交互操作项:(NSArray*)targetIndexPath with targetPosition:(CGPoint)targetPosition PreviousIndexPath:(NSArray*)PreviousIndexPath previousPosition:(CGPoint)previousPosition{
UICollectionViewLayoutInvalidationContext*上下文=[super]
InvalizationContextForInteractivelyMovingItems:TargetIndexPath
withTargetPosition:targetPosition
previousIndexPaths:previousIndexPaths
previousPosition:previousPosition];
[self.collectionView.dataSource collectionView:self.collectionView moveItemAtIndexPath:PreviousIndexPath[0]到IndexPath:TargetIndexPath[0]];
返回上下文;
}
单元格的大小是随机的还是相对于内容进行初始化?它相对于内容。我的灵感来自:好吧,那么你的问题是你的下拉视图的大小与你拖动它之前的大小不一样?对,单元格大小的改变不太容易,对吧:-)
- (UICollectionViewLayoutInvalidationContext *)invalidationContextForInteractivelyMovingItems:(NSArray<NSIndexPath *> *)targetIndexPaths withTargetPosition:(CGPoint)targetPosition previousIndexPaths:(NSArray<NSIndexPath *> *)previousIndexPaths previousPosition:(CGPoint)previousPosition{
UICollectionViewLayoutInvalidationContext *context = [super
invalidationContextForInteractivelyMovingItems:targetIndexPaths
withTargetPosition:targetPosition
previousIndexPaths:previousIndexPaths
previousPosition:previousPosition];
[self.collectionView.dataSource collectionView:self.collectionView moveItemAtIndexPath:previousIndexPaths[0] toIndexPath:targetIndexPaths[0]];
return context;
}