UILabel不会换行

时间:2012-06-18 16:05:01

标签: ios

我的iOS应用程序出现问题,并在UITableViewCell中获取UILabel以进行换行。文本显示但它只显示在一行上。

这是我的代码:

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];

    UILabel *noteLabel = (UILabel *)[cell.contentView viewWithTag:2];

    NSDictionary *contact = [jsonResults objectAtIndex:indexPath.row];
    noteLabel.lineBreakMode = UILineBreakModeWordWrap;
    noteLabel.numberOfLines = 0;
    noteLabel.text = [contact objectForKey:@"note"];   
    return cell;
}

我认为问题与这一行有关:

UILabel *noteLabel = (UILabel *)[cell.contentView viewWithTag:2];

我不确定如何从标签中获取标签,我认为此行不会让我更改标签属性。

3 个答案:

答案 0 :(得分:0)

您可能需要设置标签的高度:

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];

    UILabel *noteLabel = (UILabel *)[cell.contentView viewWithTag:2];

    NSDictionary *contact = [jsonResults objectAtIndex:indexPath.row];
    noteLabel.lineBreakMode = UILineBreakModeWordWrap;
    noteLabel.numberOfLines = 0;
    noteLabel.text = [contact objectForKey:@"note"];

    //Note: adjust the proper width to be constrained to
    CGSize size = [noteLabel.text sizeWithFont:noteLabel.font forWidth:150 lineBreakMode:noteLabel.lineBreakMode];
    CGRect labelFrame = noteLabel.frame;
    labelFrame.size = size;
    noteLabel.frame = labelFrame; 

    return cell;
}

答案 1 :(得分:0)

自2012年以来,时间已经开始。在当前的Xcode 5世界中,如果在任一代码或Interface Builder中将numberOfLines设置为0,则会自动扩展多行的高度。如果在Interface Builder或代码中设置了AutoLayout高度约束,则可以阻止在此场景中显示多行的一件事。在这种情况下,它看起来像一个被截断的标签,但与截断的标签相反,它不会以省略号(...)结尾。

为了使AutoLayout按预期运行,您通常不希望为UILabel设置更高的高度,除非您知道UILabel总是有多行。

答案 2 :(得分:0)