UITableViewCell在cell.textLabel中显示长文本

时间:2014-02-09 14:37:17

标签: ios objective-c uitableview uilabel

如果我有一个长文本,我必须增加单元格大小以适合文本。

当我指定:cell.textLabel.text = @"my string"时,如果字符串很长则会被截断。

对于这种情况,如何在两行或更多行中显示文本?我只使用UITableViewCell而不是将其子类化。是否有一些代码可以直接使用cell.textLabel显示长文本?我不是在谈论为单元格添加单独的视图。

3 个答案:

答案 0 :(得分:1)

cell.textLabel不允许您将字符串换行为两行。您需要做的是自定义它将您自己的UILabel添加到UITableViewCell并定义其参数。

这是一个可以添加到TableView的工作代码。

//define labelValue1 in your .h file

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    //NSLog(@"Inside cellForRowAtIndexPath");

    static NSString *CellIdentifier = @"Cell";

    // Try to retrieve from the table view a now-unused cell with the given identifier.
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    // If no cell is available, create a new one using the given identifier.
    if (cell == nil)
    {
        // Use the default cell style.
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

        labelValue1 = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 200, 100)]; //adjust label size and position as needed
        labelValue1.font = [UIFont fontWithName:@"BradleyHandITCTT-Bold" size: 23.0];
        labelValue1.textColor = [UIColor whiteColor];
        labelValue1.textAlignment = NSTextAlignmentCenter;
        labelValue1.numberOfLines = 2; //note: I said number of lines need to be 2
        labelValue1.backgroundColor = [UIColor clearColor];
        labelValue1.adjustsFontSizeToFitWidth = YES;
        labelValue1.tag = 100;
        [cell.contentView addSubview:labelValue1];


    }
    else
    {
        labelValue1 = (UILabel *) [cell viewWithTag:100];
    }


    // Set up the cell.
    NSString *str1 = [arryData3 objectAtIndex:indexPath.row];
    labelValue1.text = str1;


    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    cell.selectionStyle = UITableViewCellSelectionStyleNone;


    return cell;

}

答案 1 :(得分:0)

可以使用

显示多行
cell.textLabel.LineBreakMode = NSLineBreakByWordWrapping

答案 2 :(得分:0)

这是给Swift的。

cell.textLabel?.numberOfLines = 10 /// or the number you like.