如果内容不适合视图的第一行,则 UILabel 在第二行

UILabel on second line if the content doesn't fit in the view's first line

描述我的情况的最好方式是用图片。我所拥有的是一个包含多个 UILabelUIImage 的视图。红框是一个UILabel,如果内容太大应该到第二行。

从情节提要来看,当内容适合时,我有一个工作案例,但问题是当最后一个(红色框)应该转到第二行时,我不确定如何处理这个案例。我正在使用 autolayoutcartography

如果有人能指出正确的方向,我将不胜感激。

使用标签View可以解决这个问题。 TagListView 是一个外部库。 当你添加一个view作为taglistView的子类时,它的高度会自动增加。

将此添加到 pod 文件:pod 'TagListView'

func addTags() {
        let str1 = "Hi"
        tagListView.addTag(str1)
        let str2 = "Helloo"
            tagListView.addTag(str2)
        let str3 = "How Are u ? "
        tagListView.addTag(str2)
        tagListView.isUserInteractionEnabled = false
    }

你不能只用约束来做到这一点。要更改元素在屏幕上的整个位置,您需要以编程方式进行。

首先根据您当前标签的位置计算文本的宽度。

如果文本宽度大于当前标签的宽度,请看下面我的回答 link:

Auto Layout how to move the view2 from right to the bottom?

计算宽度:

func widthForView1(_ text:String, font:UIFont, height:CGFloat) -> CGFloat
{

let label:UILabel = UILabel(frame: CGRect(x: 0, y: 0, width: your_label_width, height: your_lable_height))
label.numberOfLines = 0
label.lineBreakMode = NSLineBreakMode.byWordWrapping
label.text = text
label.font = font
label.sizeToFit()
return label.frame.width
}