我正在使用iOS 11拖放API进行重新排序,并想删除开始拖动时出现的半透明单元格。可能吗?对于拖动,我仅使用UICollectionViewDragDelegate的必需方法:
- (nonnull NSArray<UIDragItem *> *)collectionView:(nonnull UICollectionView *)collectionView
itemsForBeginningDragSession:(nonnull id<UIDragSession>)session
atIndexPath:(nonnull NSIndexPath *)indexPath {
NSItemProvider *itemProvider = [NSItemProvider new];
UIDragItem *dragItem = [[UIDragItem alloc] initWithItemProvider:itemProvider];
return @[dragItem];
}
答案 0 :(得分:2)
您可以通过覆盖dragStateDidChange(_ dragState: UICollectionViewCell.DragState)
class MyCell: UICollectionViewCell {
//...
override func dragStateDidChange(_ dragState: UICollectionViewCell.DragState) {
switch dragState {
case .none:
self.layer.opacity = 1
case .lifting:
return
case .dragging:
self.layer.opacity = 0
}
}
}
答案 1 :(得分:0)
您可以在预览提供程序中返回nil
dragItem.previewProvider = ^UIDragPreview * _Nullable {
return nil;
};
快速版本
dragItem.previewProvider = {
return nil
}
答案 2 :(得分:0)
在您的单元格类中覆盖此方法:
override func dragStateDidChange(_ dragState: UICollectionViewCell.DragState) {
switch dragState {
case .none:
self.layer.opacity = 1
case .lifting:
return
case .dragging:
self.layer.opacity = 0
}
}