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

时间:2015-10-13 20:50:33

标签: swift storyboard

在一个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

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

1 个答案:

答案 0 :(得分:1)

环顾四周之后,我似乎无法找到这个问题的任何答案,但我知道出了什么问题。

我的约束位置使得尾随空间,前导空间,顶部空间和底部空间均为-8.0。发生的事情是,当单元格正在扩展并收缩时,日期选择器本身也在扩展和收缩,这会使datePicker在关闭时挤压导致闪烁和奇怪的动画。

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