使用UILabel内部流畅地自动化UIView

时间:2017-03-23 21:07:27

标签: uiview uilabel nslayoutconstraint

我有一个UIView,里面包含UILabel(没有其他内容)。我希望扩展和收缩视图,使其看起来好像标签正在扩展和收缩(通过按钮点击)。我在视图的高度上使用NSLayoutConstraint

func labelExpansion() {
    if (isExpanded) {
        myViewConstraint.constant = shortLabelHeight
    } else {
        myViewConstraint.constant = longLabelHeight
    }
    UIView.animate(withDuration: 2.2, animations: {
        self.view.layoutIfNeeded()
    })
}

问题是,标签中的文字看起来像是“跳”。当标签调整大小时,文本的位置会更改,直到动画完成,此时标签会正确地重绘到视图的顶部。

我也试过去除周围的视图,并单独调整标签的高度约束;同样有点跳跃。

如何在动画期间停止此跳转,并将标签顶部固定在视图顶部?

1 个答案:

答案 0 :(得分:0)

在尝试了一些事情之后,我找到了一个简单的解决方案:将UILabel的内容模式设置为“顶部”。

myLabel.contentMode = .top