动画化高度更改UITableView但忽略UILabel?

时间:2018-08-06 17:42:38

标签: ios swift uitableview animation

当前,我扩大了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)
}

0 个答案:

没有答案