使用自动布局动画 UIView 动画 UITableView 复选标记
Posted
技术标签:
【中文标题】使用自动布局动画 UIView 动画 UITableView 复选标记【英文标题】:Animating UIView with Autolayout animates UITableView's checkmark 【发布时间】:2016-11-09 14:30:13 【问题描述】:我有奇怪的行为。我的整个视图控制器看起来像这样(垂直顺序):
-
UILabel,
UITableView,
UIView(需要时会滑入&滑出)。 [见附注]
我在 UIView 和底部布局指南之间添加了约束,并使用此方法对其进行动画处理:
func toggleContinueButton(_ toggleOn: Bool)
if toggleOn
self.buttonViewConstraint.constant = 0
else
self.buttonViewConstraint.constant = -80
UIView.animate(withDuration: 0.5)
self.view.layoutIfNeeded()
由于某种奇怪的原因,这个螺丝复选标记,它现在从屏幕左边距之外“飞”到正确和预期的位置,位于所选单元格的右侧。下面我有选择/取消选择的简单代码:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
tableView.cellForRow(at: indexPath)!.accessoryType = .checkmark
self.updateContinueButtonState()
func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath)
tableView.cellForRow(at: indexPath)!.accessoryType = .none
self.updateContinueButtonState()
有没有人遇到过这样的怪事?
附言尝试了两个版本:第一个,滑动 UIView 在 tableView 上悬停进出,第二个在 UIView 中滑动正在缩小 tableView 的高度。没有任何效果。
【问题讨论】:
【参考方案1】:很难说,但您可以尝试先调用layoutIfNeeded
,然后更改约束,然后在动画块内再次调用它。这让其他布局更改有时间先更新。
【讨论】:
以上是关于使用自动布局动画 UIView 动画 UITableView 复选标记的主要内容,如果未能解决你的问题,请参考以下文章
使用自动布局约束在 UIScrollView 内为 UIView 设置动画
UIView animateWithDuration 动画块之外的动画自动布局视图
如何使用自动布局在 UIScrollView 中为视图高度设置动画?