【问题标题】:Animating UIStackView arrangedSubview content size change动画 UIStackView 排列的子视图内容大小变化
【发布时间】:2016-05-23 18:50:32
【问题描述】:

当其固有内容大小发生变化时,是否可以为排列的子视图设置动画?

例如,假设我有一个排列好的子视图,其中包含一个固定在边缘的 UILabel。该标签包含少量文本。新文本进来,它比以前的文本大。 label 的固有内容大小现在更大了。

我希望能够像这样对其进行动画处理:

 stackView.layoutIfNeeded()
 self.label.text = self.expanded ? textTwo : textOne
 UIView.animateWithDuration(0.3) { () -> Void in
     self.stackView.layoutIfNeeded()
 }

stackview 当前从旧内容大小“跳转”到新内容大小,忽略动画块。

当然,另一种方法是手动找出排列的子视图的高度,并为该约束设置动画。如果可能的话,我想避免这种情况。

【问题讨论】:

  • 你试过调整superview的布局吗?

标签: ios autolayout uistackview


【解决方案1】:

找到一些有用的东西:

label.text = expanded ? textOne : textTwo
UIView.animateWithDuration(0.4) { () -> Void in
    self.stackView.setNeedsLayout()
    self.stackView.layoutIfNeeded()
}

不起作用:

label.text = expanded ? textOne : textTwo
UIView.animateWithDuration(0.4) { () -> Void in
    self.stackView.layoutIfNeeded()
}

奇怪的是,改变固有内容大小并不会使 stackView 需要布局...

【讨论】:

  • 我无法以这种方式制作动画。更改 intrinsicContentSize 没有任何作用,但用布局约束替换它是可行的,尽管并不理想。
猜你喜欢
  • 1970-01-01
  • 2018-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多