Как анимировать действия редактирования для строки в IndexPath, чтобы показать действие пользователя

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

Я искал некоторые предварительно выходящие библиотеки, но не нашел ни одной.

Можно ли программно провести ячейку? И поэтому вызвать это на viewDidLoad (или появиться)?


person Craig.Pearce    schedule 26.06.2016    source источник
comment
Вы нашли решение?   -  person Luigi Saggese    schedule 18.08.2016
comment
@LuigiSaggese Нет, извините, я тоже перестал смотреть.   -  person Craig.Pearce    schedule 19.08.2016


Ответы (2)


В Swift вы можете сделать что-то подобное, однако это не раскрывает основные действия редактирования, которые обычно открываются, проводя пальцем влево по UITableViewcell. Он анимирует только действие смахивания

fileprivate func showSwipeAction() 
{
    let animation = CABasicAnimation(keyPath: "position")
    animation.duration = 0.08
    animation.repeatCount = 1
    animation.autoreverses = true
    animation.speed = 0.30
    let fromPoint:CGPoint = CGPoint(x: self.center.x, y: self.center.y)
    animation.fromValue = NSValue(cgPoint: fromPoint)
    let toPoint:CGPoint = CGPoint(x: self.center.x - 50, y: self.center.y)
    animation.toValue = NSValue(cgPoint: toPoint)
    self.setEditing(true, animated: true)
    self.layer.add(animation, forKey: "position")
}
person jcpennypincher    schedule 30.11.2017

Я определенно второй ответ передо мной.

Чтобы сделать его более реалистичным, вот моя реализация анимации:

if let cell = tableView.cellForRow(at: IndexPath(row: 0, section: 0))
    {
        let favouriteView = createFakeFavouriteAction(frame: cell.frame)
        tableView.insertSubview(favouriteView, belowSubview: cell)

        CATransaction.begin()
        let animation = CABasicAnimation(keyPath: "position")
        animation.duration = 0.08
        animation.repeatCount = 1
        animation.autoreverses = true
        animation.speed = 0.3
        let fromPoint: CGPoint = CGPoint(x: cell.center.x, y: cell.center.y)
        animation.fromValue = NSValue(cgPoint: fromPoint)
        let toPoint: CGPoint = CGPoint(x: cell.center.x - 75, y: cell.center.y)
        animation.toValue = NSValue(cgPoint: toPoint)
        CATransaction.setCompletionBlock {
            favouriteView.removeFromSuperview()
        }
        cell.setEditing(true, animated: true)
        cell.layer.add(animation, forKey: "position")
    }

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

person sam k    schedule 11.06.2018
comment
Не могли бы вы опубликовать код в функции createFakeFavouriteAction? - person funkenstrahlen; 25.03.2019