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

时间:2017-02-21 12:17:02

标签: ios objective-c swift autolayout ios-autolayout

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

从故事板开始,我有一个工作案例,当内容适合但问题是我不知道如何处理最后一个(红色框)应该转到第二行的情况。我正在使用autolayoutcartography

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

enter image description here enter image description here

3 个答案:

答案 0 :(得分:1)

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

如果文字宽度超过当前标签的宽度,请从下面的链接中查看我的答案:

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
}

答案 1 :(得分:0)

使用标记View可以解决此问题。 TagListView是一个外部库。 当您将视图添加为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
    }

答案 2 :(得分:0)

您不能仅使用约束来执行此操作。要更改屏幕上元素的整个位置,您需要以编程方式执行此操作。