Как зарегистрироваться для предварительного просмотра одной ячейки в 3D Touch?

В настоящее время у меня есть следующий код в viewDidLoad:

if #available(iOS 9.0, *) {
    if traitCollection.forceTouchCapability == .Available {
        registerForPreviewingWithDelegate(self, sourceView: tableView)
    }
}

Дело в том, что в данном случае размыто все, что выходит за пределы UITableView, а не все, что выходит за пределы этого конкретного UITableViewCell.

Как я могу выставить только одну ячейку?

Состояние этого изображения во время принудительного 3D-касания. введите здесь описание изображения


person Bartłomiej Semańczyk    schedule 02.11.2015    source источник
comment
Я думаю, что этот ответ может вам помочь: ‹stackoverflow.com/questions/33002637/  -  person Alexis Akers    schedule 02.11.2015


Ответы (2)


Это должно быть в viewDidLoad():

if traitCollection.forceTouchCapability == .available {
    registerForPreviewing(with: self, sourceView: tableView)
}

Затем в previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) добавьте это:

guard let selectedIndexPath = tableView.indexPathForRow(at: location) else { return nil }
previewingContext.sourceRect = tableView.rectForRow(at: selectedIndexPath)
person enigrify    schedule 17.03.2020

Вы правильно сделали, вам нужно зарегистрироваться для предварительного просмотра в viewDidLoad . Хотя вам также необходимо реализовать метод previewingContext, чтобы предоставить исходный прямоугольник. По сути, вы укажете ячейку в качестве исходного прямоугольника, и все за ее пределами станет размытым.

Пожалуйста, ознакомьтесь с этим учебник Peek and Pop для получения дополнительной информации.

Вы также можете проверить пример кода

person Quentin Ribierre    schedule 03.01.2016
comment
он имеет в виду CELL - person Leo; 09.04.2019