tableView.beginUpdates 和 datePicker 发生奇怪的动画

Weird animation happening with tableView.beginUpdates and a datePicker

在 tableView 中,我有一个按钮,当按下该按钮时,它会修改其下方单元格的高度以扩展和收缩日期选择器,因此它会出现和消失。但是,我遇到了一个奇怪的动画错误,选择器在关闭和打开时会波动和闪烁。

这是我的 tableView heightForRowAtIndexPath

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    if indexPath.row == 0 {
        return 147
    } else if indexPath.row == 4 {
        if picker {
            return 216
        } else {
            return 0
        }
    } else {
        return 70
    }
}

我的按钮操作

@IBAction func birthdateLabelTapped(sender: AnyObject) {
    picker = !picker
    tableView.beginUpdates()
    tableView.endUpdates()
}

以及 var

var picker: Bool = false

我正在使用故事板来设置静态单元格。

环顾四周后,我似乎找不到这个问题的任何答案,但我确实弄清楚出了什么问题。

我设置了约束,以便尾随 Space、前导 Space、顶部 Space 和底部 Space 都在 -8.0。发生的事情是,当单元格扩展和收缩时,日期选择器本身也在扩展和收缩,这会使 datePicker 在关闭时挤压,导致闪烁和奇怪的动画。

解决方案最终是摆脱底部 Space 约束,然后添加高度约束。这解决了问题,因为它不再修改 datePicker 本身,现在它只是使 datePicker 不可见。