iOS UILabel宽度不适合表格单元格

时间:2015-03-17 03:52:26

标签: ios uitableview autolayout uilabel

我是iOS开发的新手。我试图在uitableviewcell中放置标签时遇到问题。文本不再出自单元格。我添加了所有必需的约束,但它不起作用。 这是我的设置和代码:

Title label attributes: Number of lines-0, Line breaks-Word wrap

viewDidLoad中():

self.tableView.estimatedRowHeight = 68.0;
self.tableView.rowHeight = UITableViewAutomaticDimension;

的cellForRowAtIndexPath():

UILabel *titleLabel = (UILabel*)[cell viewWithTag:100];
titleLabel.text = @"Why does this long text get out of the cell? The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.";

我正在使用xcode 6.2和ios 8.2。

感谢您的帮助。

截图:
enter image description here

细胞原型: enter image description here

标题标签限制:
enter image description here

1 个答案:

答案 0 :(得分:0)

您需要做两件事才能将文字保留在标签边界和单元格中。

  1. 如果标签的宽度是固定的,那么在这种情况下,您的单元格的高度取决于标签的高度(从其内容派生)。由于您已将estimatedRowHeightrowHeight提供为UITableViewAutomaticDimension。所以这没关系。
  2. 标签的宽度应限制在/到达单元格的最右侧之前/之前。另外请确保如果标签的宽度是灵活的,那么它也应该从右侧钩住。
  3. 或者,您可以使用以下API编写代码,以根据标签的内容计算标签的高度。这将决定细胞的高度。最后,在创建单元格时,将文本分配给标签。

    适用于iOS 7及以上版本:

    #define LABELS_MAX_HEIGHT             10000.0f
    
    
    CGSize constraintSize = CGSizeMake(label.frame.size.width, LABELS_MAX_HEIGHT);
    
    NSAttributedString *attributedText = [[[NSAttributedString alloc] initWithString:text attributes:@{NSFontAttributeName: label.font}] autorelease];
            CGRect rect = [attributedText boundingRectWithSize:constraintSize
                                                       options:NSStringDrawingUsesLineFragmentOrigin
                                                       context:nil];
            strSize = rect.size;