我有静态单元格的UITableView。我已将等内容视图高度约束设置为等于UIPicker视图高度。我还使用更改UITableViewCell内容视图实现了didSelectRowAt方法。 https://youtu.be/lJuTLQ1oTaE
魔术发生,改变TableViewCell的高度是动画的。但UIPickerView高度的以下更改同时发生,没有动画。我试图将UIView.animate放在layoutIfNeeded()中,但它没有帮助。
如何设置UIPickerView高度的自动更改动画?
// TableView functions
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if let cell = tableView.cellForRow(at: indexPath) {
let reuseIdentifier = cell.reuseIdentifier
guard reuseIdentifier != nil else {return}
if reuseIdentifier == "currencyPickerTableViewCell" && self.selectedCellIndexPath == nil {
self.skipCellsFromGestureRecognition.append(indexPath)
self.selectedCellIndexPath = indexPath
print(currencyPicker.constraints)
tableView.beginUpdates()
tableView.endUpdates()
} else if reuseIdentifier == "currencyPickerTableViewCell" && self.selectedCellIndexPath != nil {
self.selectedCellIndexPath = nil
self.tableView.beginUpdates()
self.tableView.endUpdates()
}
}
}
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if self.selectedCellIndexPath == indexPath {
return self.selectedCellHeight
} else {
return self.unselectedCellHeight
}
}
答案 0 :(得分:0)
动画确实发生了,但由于 UIPicker 的字体保持不变,你无法看到它,所以更改 UIView.animate 中的字体,同时请注意你的选择器的宽度是静态的,因此,当字体变大时,修剪字符的数量会增加。 。 。