我在UIScrollView
中有一个UILabel,UIScrollView
的contentSize由UILabel
中的文本数量决定。我设法通过使高度,宽度和宽高比约束可选来为UIScrollView
中的contentView定义最小高度。
这就是UIScrollView
的层次结构的样子 -
UIScrollView
contentView
UILabel
在某些情况下,即使文字很大并且标签扩展到它的框架之外,我也希望UILabel
的框架与它的方框架保持一致。额外的文字被截断。我正在使用自动布局,所以我认为仅通过设置UILabel
的框架就不可能实现这一点,而且它与更改约束的优先级有关。
UILabel
的约束 -
UILabel
的前导,尾随,顶部和底部连接到contentView。
UISCrollView
-
必需
追踪,领先,顶部和底部到超级视图,即UIScrollView
可选
与superview(UIScrollView
)的高度和宽度相等,宽高比= 1:1
修改
我需要这样做,当我将lineBreakMode
的{{1}}设置为UILabel
时,文本会自动被截断,而NSLineBreakByTruncatingTail
只会返回可见文字。
答案 0 :(得分:0)
好的,所以如果我理解了一切,你想要一个可展开的标签,要么显示整个文字,要么有方形。这应该像启用/禁用label.height <= label.width
(或==
这样的约束一样简单,具体取决于您希望它看起来是什么样的,如果文本较少则适合方形标签)。您可以在界面构建器中创建此约束,为其添加插座,然后执行以下操作:
self.labelSquareConstraint.active = YES/NO;
关于编辑中的问题:没有简单的方法可以从标签中获取文本的可见部分,但是在SO上有一些关于此的线程,例如:
Get truncated text from UILabel
UILabel visible part of text
Calculate the range of visible text in UILabel