Пользовательский вид для UICollectionViewCell Drag Preview - PullRequest
0 голосов
/ 24 октября 2018

Я пытаюсь реализовать функцию, при которой пользователь перетаскивает одну ячейку коллекции в другую.Однако я хочу полностью изменить предварительный просмотр объекта в движении, чтобы он соответствовал визуальной метафоре моего приложения (элемент не перемещается, что-то, что содержит элемент, перемещается).

Например, скажем,в моей ячейке коллекции отображается перо свиней, и я хочу, чтобы свинья переходила от одного пера к другому, вид предварительного просмотра должен представлять собой один, а не перо.Это немного отличается от того, что Apple намеревается использовать с их API, но я думаю, что оно действительно.

Я видел func collectionView(_ collectionView: UICollectionView, dragPreviewParametersForItemAt indexPath: IndexPath) -> UIDragPreviewParameters, но это позволяет вам слегка его обрезать, а не заново делать весь вид.

Есть идеи? / Мысли?

1 Ответ

0 голосов
/ 26 апреля 2019

Начиная с 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]
}

Как только вы начнете перетаскивать объект вокруг перетаскиваемого изображения, он будет изменен на ваш пользовательский вид.

Демонстрация

В демонстрации вы можете увидеть два UICollectionViews.Операция перетаскивания запускается из верхнего UICollectionView, а элемент перетаскивается в нижний.При перемещении элемента отображается его предварительный просмотр.

enter image description here

Это то, что вы ищете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...