gpt4 book ai didi

ios - UICollectionViewCell 拖动预览的自定义 View

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:15:14 34 4
gpt4 key购买 nike

我正在尝试实现一项功能,用户可以将一个 collectionview 单元格拖放到另一个单元格上。但是,我想完全更改运动中事物的预览,以匹配我的应用程序的视觉隐喻(项目没有移动,项目包含的东西正在移动)。

例如,假设我的 collectionview 单元格显示 pig 圈,我想让 pig 从一个圈移动到另一个圈,预览 View 应该是显示单个而不是笔的 View 。它与苹果对其 API 的用途略有不同,但我认为是有效的。

我见过 func collectionView(_ collectionView: UICollectionView, dragPreviewParametersForItemAt indexPath: IndexPath) -> UIDragPreviewParameters 但这只是让你稍微剪辑它,而不是重新做整个 View 。

有什么想法吗?/想法?

最佳答案

从 iOS 11 开始,您可以使用 UIDragItem。有一个

open var previewProvider: (() -> UIDragPreview?)?

一个简单的例子:

func collectionView(_ collectionView: UICollectionView, itemsForBeginning session: UIDragSession, at indexPath: IndexPath) -> [UIDragItem]
{
...
let dragItem: UIDragItem = ....
dragItem.localObject = item
dragItem.previewProvider = { () -> UIDragPreview? in
let imageView = UIImageView(image: UIImage(named: "preivewOfThingInMotion"))
imageView.frame = CGRect(x: 0, y: 0, width: 64, height: 64)
return UIDragPreview(view: imageView)
}
return [dragItem]
}

一旦您开始拖动项目,拖动图像周围的项目就会更改为您的自定义 View 。

演示

在演示中,您可以看到两个 UICollectionView。从上层 UICollectionView 开始拖放操作,将一个项目拖到下层。当项目移动时,会显示项目的自定义预览。

enter image description here

这就是你要找的吗?

关于ios - UICollectionViewCell 拖动预览的自定义 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52960717/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com