使用内部的 UILabel 自动调整 UIView 的大小,顺利
Autoresizing UIView with UILabel inside, smoothly
我有一个 UIView
,里面有一个 UILabel
(没有别的)。我希望扩展和收缩视图,使其看起来好像标签正在扩展和收缩(通过点击按钮)。我在视图的高度上使用 NSLayoutConstraint
:
func labelExpansion() {
if (isExpanded) {
myViewConstraint.constant = shortLabelHeight
} else {
myViewConstraint.constant = longLabelHeight
}
UIView.animate(withDuration: 2.2, animations: {
self.view.layoutIfNeeded()
})
}
问题是,标签中的文本看起来像 'jumps'。随着标签的大小调整,文本的位置发生变化,直到动画结束,此时标签正确地重新绘制到视图的顶部。
我也试过去掉环景,单独调整label的高度约束;那同样令人不安。
如何在动画过程中停止这种跳转,并将标签的顶部固定到视图的顶部?
尝试了几次之后,我找到了一个简单的解决方案:将 UILabel
的内容模式设置为 'Top'。
myLabel.contentMode = .top
我有一个 UIView
,里面有一个 UILabel
(没有别的)。我希望扩展和收缩视图,使其看起来好像标签正在扩展和收缩(通过点击按钮)。我在视图的高度上使用 NSLayoutConstraint
:
func labelExpansion() {
if (isExpanded) {
myViewConstraint.constant = shortLabelHeight
} else {
myViewConstraint.constant = longLabelHeight
}
UIView.animate(withDuration: 2.2, animations: {
self.view.layoutIfNeeded()
})
}
问题是,标签中的文本看起来像 'jumps'。随着标签的大小调整,文本的位置发生变化,直到动画结束,此时标签正确地重新绘制到视图的顶部。
我也试过去掉环景,单独调整label的高度约束;那同样令人不安。
如何在动画过程中停止这种跳转,并将标签的顶部固定到视图的顶部?
尝试了几次之后,我找到了一个简单的解决方案:将 UILabel
的内容模式设置为 'Top'。
myLabel.contentMode = .top