自动换行在我的 UILabel 上不起作用

use*_*076 1 xcode constraints word-wrap swift

我的应用程序使用自定义单元格在 tableview 中显示产品。在 iPhone 5 上使用时,产品名称用完了,所以我将它设置为 wrap ,这不起作用。每个单元格都使用下面的代码填充到我的 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)
    }
}
Run Code Online (Sandbox Code Playgroud)

我也试过使用约束,但这也不起作用

我已经使用 preferredMaxLayoutWidth 添加了下面的代码,并在大小管理器中将首选宽度设置为显式,并添加了约束来设置大小和高度以及位置。

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

尽管进行了这些更改,但 UILabel 仍未换行

小智 5

当您的目标是 iOS 6 到 8 或更高版本时,您必须在 UILabel 上显式设置 preferredWidth 属性。如果标签有多于一行,则必须这样做。另见preferredMaxLayoutWidth:

所以你只需要指定这个值(在大多数情况下,最好去故事板,点击标签,去“尺寸检查器”,然后点击“首选宽度”旁边的“显式”)。