自动换行不适用于我的UILabel

时间:2015-06-10 08:39:24

标签: xcode swift constraints word-wrap

我的应用使用自定义单元格在tableview中显示产品。在iPhone 5上使用时的产品名称是在结束时运行,因此我将其设置为包装             这不起作用。使用下面的代码在我的Customcell类中填充每个单元格,我在brandTxt标签上添加了几行,这些行也无效。

public func configure(#text: String?, placeholder: String) {
    if (placeholder == "1")
    {
        brandItemLabel.text = text
        brandItemLabel.lineBreakMode = NSLineBreakMode.ByWordWrapping
        brandItemLabel.numberOfLines = 2
    }
    else if (placeholder == "2")
    {
        brandSmallLabel.text = text

    }
    else if (placeholder == "3")
    {
        uomCodeLabel.text = text

    }
    else if (placeholder == "4")
    {
        codeLabel.text = text

    }
    else if (placeholder == "6")
    {
        var image = UIImage(named: "Blank.jpg")
        if let url = NSURL(string: text!) {
            if let data = NSData(contentsOfURL: url) {
                image = UIImage(data: data)
            }
        }
        var imgViewLbl = UIImageView(image: image) as UIImageView
        imgViewLbl.frame = CGRect(x: 10, y: 4, width: 90, height: 90)
        customView.addSubview(imgViewLbl)
    }
}

我也尝试过使用约束,但这两种方法都不起作用

我之后使用preferredMaxLayoutWidth添加了下面的代码,并在Size Manager中设置了Preferred Width to Explicit,并添加了Constraints来设置大小和高度以及位置。

public func configure(#text: String?, placeholder: String) {
    if (placeholder == "1")
    {
        brandItemLabel.text = text
        brandItemLabel.lineBreakMode = NSLineBreakMode.ByWordWrapping
        brandItemLabel.numberOfLines = 2
        brandItemLabel.preferredMaxLayoutWidth = 330
    }

尽管有这些变化,UILabel仍然没有包装

2 个答案:

答案 0 :(得分:3)

当您将iOS 6定位到8或更高版本时,您必须在UILabel上显式设置preferredWidth属性。如果标签有多行,则必须这样做。另请参阅preferredMaxLayoutWidth:

所以你只需要指定这个值(在大多数情况下,最好去故事板,点击标签,转到"尺寸检查器"然后点击&# 39;明确'旁边"首选宽度")。

答案 1 :(得分:0)

在Size Inspector中检查Follow Readable Width并设置更大的高度,对我来说有用!