UILabel numberOfLines 随动画变化
Posted
技术标签:
【中文标题】UILabel numberOfLines 随动画变化【英文标题】:UILabel numberOfLines change with animation 【发布时间】:2018-12-12 01:01:57 【问题描述】:我在UIStackView
内有一个UILabel
,而堆栈视图在另一个UIScrollView
内,我正在使用自动布局。标签有单行(即numberOfLines
等于 1),在少数情况下,我需要将其设置为多行(即numberOfLines
等于 0)并带有扩展它的动画。
func expand()
label.numberOfLines = 0
当我点击展开时:
messageView.expand()
UIView.animate(withDuration: 0.3)
self.layoutIfNeeded()
但是,当它展开时,标签的框架没有更新,我必须滚动(滚动视图)以使其完全可见。有什么问题?
谢谢!
【问题讨论】:
“标签的框架没有更新”,你的意思是它没有扩展? @KarthickRamesh 是的,它没有扩展 可以为messageview添加自动布局约束吗? 【参考方案1】:-
您是否更改了标签的文本?
检查自动布局是否正确
【讨论】:
是的,我将标签文本从单个单词更改为长句,并将其numberOfLines
从 1 更改为 0。
@rocoo 请使用 cmets 获取此类建议。答案应该为问题提供有效的解决方案。
在我的情况下,问题是由于限制。【参考方案2】:
UILabel
的动画无法在其中执行
UIView.animate(withDuration:)
.
这应该有效:
UIView.transition(with: label, duration: 0.5, options: .transitionCrossDissolve, animations:
self.label.numberOfLines = 0
)
您可以试验选项和执行块。
【讨论】:
以上是关于UILabel numberOfLines 随动画变化的主要内容,如果未能解决你的问题,请参考以下文章
numberOfLines=2 的 UILabel 使用啥约束高度? (使用 [NSString sizeWithFont...])
UILabel 的 numberOfLines 在单元格中不起作用
使用 ForEach 插入的 SwiftUI 视图未随动画更新
UILabel numberoflines 和 font size 在缩小时自动设置