限制UIScrollView内UILabel的高度

时间:2017-04-25 06:00:54

标签: ios objective-c uiscrollview autolayout

我在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只会返回可见文字。

1 个答案:

答案 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