Анимация при сворачивании ячейки Static Cells

Как правильно добавить анимацию для разворачивания/сворачивания DatePicker по тапу на ячейке? Попробовал простым путем, на мой взгляд:

import UIKit

class tableTableViewController: UITableViewController {
    var tap = false

    override func viewDidLoad() {
        super.viewDidLoad()
    }


    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        if indexPath.row == 0 {
            tap = !tap
            //tableView.reloadRows(at: [indexPath], with: .none)
        }
        tableView.beginUpdates()
        tableView.endUpdates()
        tableView.reloadData()
    }


     override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        if indexPath.row == 1 {
            if tap {
                return tableView.rowHeight
            } else {
                return 0
            }
        }
        return tableView.rowHeight
    }
}

но заголовок второй секции Static Cells перемещается сразу без анимации. (На приложенном gif, думаю это видно.) Если использовать tableView.reloadRows(), то эффект такой же.

введите сюда описание изображения


Ответы (1 шт):

Автор решения: Oleg Soloviev

Попробуйте так:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    if indexPath.section == 0, indexPath.row == 0 {
        tap = !tap
        tableView.reloadRows(at: [IndexPath(row: 1, section: 0)], with: .none)
    }
}

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    if indexPath.section == 0, indexPath.row == 1 {
        return (tap ? 163 : 0)
    }
    return super.tableView(tableView, heightForRowAt: indexPath)
}
→ Ссылка