UILabel numberOfLines 随动画变化

hzx*_*zxu 4 uikit uilabel ios autolayout

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

func expand() {
    label.numberOfLines = 0
}
Run Code Online (Sandbox Code Playgroud)

当我单击展开时:

messageView.expand()
UIView.animate(withDuration: 0.3) {
    self.layoutIfNeeded()
}
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

Ole*_*leg 5

的动画UILabel不在 内执行 UIView.animate(withDuration:)。
这应该有效:

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

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