UILabel numberOfLines随动画而变化

时间:2018-12-12 01:01:57

标签: ios autolayout uikit uilabel

我在UILabel内有一个UIStackView,并且堆栈视图在另一个UIScrollView内,我正在使用自动布局。标签具有单行(即numberOfLines等于1),在某些情况下,我需要使用扩展它的动画将其设置为多行(即numberOfLines等于0)。

func expand() {
    label.numberOfLines = 0
}

当我单击展开时:

messageView.expand()
UIView.animate(withDuration: 0.3) {
    self.layoutIfNeeded()
}

但是,当它展开时,标签的框架不会更新,我必须滚动(滚动视图)以使其完全可见。怎么了?

谢谢!

2 个答案:

答案 0 :(得分:3)

  1. 您是否更改了标签的文字?
  2. 检查自动布局是否正确

答案 1 :(得分:0)

UILabel的动画在UIView.animate(withDuration:)内无法执行 这应该起作用:

UIView.transition(with: label, duration: 0.5, options: .transitionCrossDissolve, animations: {
     self.label.numberOfLines = 0
})

您可以尝试使用选项和执行块。