我有一个静态UITableView
,其中UIPickerView
中有一个UITableViewCell
。触发didSelectRowAt
时,应该切换具有UIPickerView
的单元格的高度。我使用beginUpdates()
和endUpdates()
来更改单元格的高度。展开时看起来不错,但折叠时UIPickerView
不会动画,并且折叠速度比单元格快。不知道我在做什么错。
我已经确保将true
,{{1}的ContentView)和clipToBounds
上UITableViewCell
的所有视图都设置为UITableViewCell
。我试图将beginUpdates / endUpdates包装在UIPickerView
中。我的DispatchQueue.main.async
使用的是自动版式,并且(前导,尾随,顶部,底部)边缘等于单元格的“内容视图”。我在UI中使用StoryBoard。
UIPickerView
我希望动画很流畅,override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
switch (indexPath.section, indexPath.row) {
case (1,1):
showPicker = !showPicker
tableView.beginUpdates()
tableView.endUpdates()
default:
()
}
}
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
switch (indexPath.section, indexPath.row) {
case (1, 1):
if !showDueDate {
return 0
}
case (1, 2):
if !showPicker {
return 0
}
case (_, _):
break
}
return super.tableView(tableView, heightForRowAt: indexPath)
}
会和UIPickerView
一起折叠。
查看gif以查看问题
答案 0 :(得分:0)
使用self.tableView.reloadRows(at: IndexPath(row: indexPath.row, section: indexPath.section), with: .fade)
代替beginUpdates
/ endUpdates
。设置动画表时,它将为您提供平滑的动画。
答案 1 :(得分:0)
弄清楚了。我对UIPickerView
的底部约束设置为内容视图的底部,常量为0。将其更改为<= 0并对其进行了修复。不明白为什么0不起作用。至少我知道了...