iOS Перетаскивание. Как заменить ячейку пользовательским представлением при перетаскивании - PullRequest
1 голос
/ 07 мая 2020

Можно ли полностью заменить элемент перетаскиваемого UITableViewCell на пользовательский UIView?

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

Я использовал UITableViewDragDelegate и UIDropInteraction, но не смог найти замену ячейки, только получить часть из ячейки с помощью UIBezierPath, чтобы вырезать часть ячейки.

1 Ответ

1 голос
/ 07 мая 2020

Вы можете добиться этого, реализовав этот метод делегата

 func tableView(_ tableView: UITableView,
    itemsForBeginning session: UIDragSession,
    at indexPath: IndexPath) -> [UIDragItem] {
        let provider = NSItemProvider()
            let item = UIDragItem(itemProvider: provider)

            // remove this code to drag whole cell
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            item.previewProvider  = { () -> UIDragPreview? in
               let previewImageView = UIView()
               previewImageView.frame =  CGRect(x: 0,y: 0,width: 50,height: 50)
              previewImageView.layer.cornerRadius = previewImageView.bounds.maxX / 2
               return UIDragPreview(view: previewImageView)
            }
            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



            return [item]
    }

Вы получите этот эффект

enter image description here

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