在我停用其子视图的约束后动画化tableviewcell

时间:2017-12-12 22:58:28

标签: swift autolayout tableview constraints cell

我有一个单元格,其文本视图的大小为n。当我按下按钮时,我停用该高度约束,并且由于为动态单元大小设置了tableview,单元格会调整大小。唯一令我烦恼的是,我似乎无法让它在大小上变得有活力。它相当“二元”,收缩或扩大。我已经尝试在indexpath重新加载行,beginupdates-endupdates,但我已经碰壁了。我很感激任何建议。感谢

2 个答案:

答案 0 :(得分:0)

如果要为约束更改设置动画,通常可以使用约束更改后跟a来执行此操作 UIView.animate(withDuration:1){self.view.layoutIfNeeded() }

如果您尝试设置实际约束更改的动画,则无效。

答案 1 :(得分:0)

您可以将layoutIfNeeded()置于常规animate(withDuration...)方法中,但创建核心动画事务可让您使用自定义时间(缓动)曲线。

CATransaction.begin()
someViewConstraintDefault.isActive = false
someViewConstraintNew.isActive = true
CATransaction.setAnimationTimingFunction(CAMediaTimingFunction(controlPoints: 0.25, 1, 0.25, 1))
UIView.animate(withDuration: 0.5, animations: { [weak self] in

    self?.view.layoutIfNeeded()

})
CATransaction.commit()

这是构建自定义时序曲线的绝佳工具:interesting post