邻居UILabel不会包装文本

时间:2016-08-07 17:42:37

标签: ios swift

我在循环中创建的UILabel有问题。

当左侧标签文本太长时,它会将正确的标签推出视图,它不会将其内容包装到下一行。

我尝试过设置不同的高度,约束和拥抱/压缩值,但没有任何效果。

这是导致问题的代码的一部分:

require

结果如下: overlapping ui labels

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

我可以看到它的方式,你有两个选择:

  1. 使用1 UILabel,并将I' ts行数设置为0,因此如果需要,它将知道增长。并在屏幕右侧创建一个约束(与前导相同,添加一个尾随)。每个循环在标签上添加文字,只需添加一个标签。
  2. 这样的事情:

    let titleLabel = UILabel(frame: CGRectMake(8, 8, 20, 80))
    titleLabel.text = display_name
    titleLabel.font = UIFont(name: "Helvetica", size: 12)
    titleLabel.numberOfLines = 0
    titleLabel.lineBreakMode = NSLineBreakMode.ByWordWrapping
    titleLabel.translatesAutoresizingMaskIntoConstraints = false
    self.view.addSubview(titleLabel)
    
    let leadingConstaint = NSLayoutConstraint(item: titleLabel, attribute: NSLayoutAttribute.Leading, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.Leading, multiplier: 1.0, constant: 0)
    
    let trailingConstaint = NSLayoutConstraint(item: titleLabel, attribute: NSLayoutAttribute.Trailing, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.Trailing, multiplier: 1.0, constant: 0)
    
    let topConstaint = NSLayoutConstraint(item: titleLabel, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.Top, multiplier: 1.0, constant: 0)
    
    self.view.addConstraints([leadingConstaint, trailingConstaint, topConstaint])
    
    
    for (key_name, display_name) in ConfiguratorMaps.cableMap {
    
        if(searchResultsObject?.fuse!.row!.value(named: key_name) == nil) {
            continue;
        }
            titleLabel.text += display_name
    
    }
    
    1. 您可以计算屏幕的大小,然后在到达屏幕边缘时将最后一个标签向下移动一行。但是你没有使用AutoLayout的强大功能,所以我不太推荐这个选项。

答案 1 :(得分:0)

将TitleLabel ContentHuggingPriority设置为250 将ValueLabel ContentHuggingPriority设置为251 将ValueLabel水平内容压缩优先级设置为751。

通过设置这些值,它将显示值标签的全文。