当前,我扩大了UITableViewCell的高度,以向视图添加45px底部栏。当我分别调用tableView.beginUpdates()
和tableView.endUpdates()
时,高度会设置正确的动画效果,但是这会使我的文本似乎从单元格的中心重新绘制到顶部。
这是非常令人讨厌的,因为在显示此条之后,文本实际上位于同一位置,并且由于设置了UILabel的新底部锚点,因此它似乎在进行动画处理。有什么方法可以使公正动画化底部栏,并将UILabel保持在同一位置?附件为当前发生的情况:
https://i.imgur.com/eMaD4nP.gifv
我尝试过在没有动画的完成块中运行它,如下所示:
UIView.performWithoutAnimation {
tableView.beginUpdates()
tableView.endUpdates()
}
可将文本保留在同一位置,但根本不会使底部的栏成为动画(如此方法所期望的那样)。理想情况下,我可以使用UILabel达到相同的效果,而不能使用UITableViewCell的其余部分实现相同的效果。
编辑:在执行beginUpdates()之前,我的一些AL代码正在运行。我正在使用一个名为Anchorage的库,该库使AL语法更易于理解,但这有效地使可视化布局约束语言具有自定义语法
NSLayoutConstraint.deactivate(menuHeight)
menuHeight = batch {
menu.heightAnchor == CGFloat(45)
menu.horizontalAnchors == contentView.horizontalAnchors
menu.bottomAnchor == contentView.bottomAnchor
title.bottomAnchor == menu.topAnchor - CGFloat(8)
menu.topAnchor == title.bottomAnchor + CGFloat(8)
}