如何使用 iOS11+ 拖放更改正在拖动的单元格的背景?

Dem*_*ese 8 ios uicollectionview swift

我正在尝试在 UICollectionView 中实现新的拖放方法,但无法弄清楚如何从被拖动的单元格中删除背景。

这是问题的屏幕截图:

在此处输入图片说明

这是我正在尝试的代码:

func collectionView(_ collectionView: UICollectionView, dragPreviewParametersForItemAt indexPath: IndexPath) -> UIDragPreviewParameters? {
    let parameters = UIDragPreviewParameters()
    parameters.backgroundColor = .clear
    return parameters
}
Run Code Online (Sandbox Code Playgroud)

问题是,它真的不起作用。背景仍然可见。我正在考虑使用visiblePath: UIBezierPath,但我认为它不会很好地处理文本。

有没有办法完全删除这个背景?

Rob*_*Rob 11

我不确定有没有办法在不使用UIBezierPath.

这是我为类似的事情所做的一个例子:

final class CustomCell: UITableViewCell {
    @IBOutlet weak var mySuperLabel: UILabel!
    @IBOutlet weak var whiteSubview: UIView! // I have added a cornerRadius of 12.0 in the XIB
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

然后,委托方法:

func tableView(_ tableView: UITableView, dragPreviewParametersForRowAt indexPath: IndexPath) -> UIDragPreviewParameters? {
    let cell = tableView.cellForRow(at: indexPath) as! CustomCell
    let previewParameters = UIDragPreviewParameters()
    let path = UIBezierPath(roundedRect: cell.whiteSubview.frame, cornerRadius: 12.0)
    previewParameters.visiblePath = path
    previewParameters.backgroundColor = .clear
    return previewParameters
}
Run Code Online (Sandbox Code Playgroud)

结果:

在此处输入图片说明

  • 对我来说效果很好。我还使用“dropPreviewParametersForRowAt”实现了相同的代码 (2认同)