1

プロトタイプ セルを使用する UITableView があります。セルには、dataCell というカスタム クラスがあります。カスタム セルには、idLabel、contLabel、および expLabel の 3 つの UILabels もあります。セルは、expLabel のテキストの量に基づいて適切にサイズ変更されます。ただし、ラベル自体のサイズを変更することはできません。下にスクロールすると、一部のラベルのサイズが変更されます。ただし、上にスクロールすると、2 行しか表示されず、テキストが省略されます。これが私のコードです

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

dataCell *cell = (dataCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];


// the rest of your configure cell

// First Cell Label
[cell.idLabel setText:[idData objectAtIndex:indexPath.row]];
cell.idLabel.numberOfLines = 0;


// Second Cell Label
[cell.contLabel setText:[conData objectAtIndex:indexPath.row]];
cell.contLabel.numberOfLines = 0;



// Third Cell Label
[cell.expLabel setText:[expData objectAtIndex:indexPath.row]];
cell.expLabel.numberOfLines=0;
CGSize expectedLabelSize = [cell.expLabel.text sizeWithFont:cell.expLabel.font constrainedToSize:CGSizeMake(220, FLT_MAX) lineBreakMode:cell.expLabel.lineBreakMode];
cell.expLabel.frame=CGRectMake(cell.expLabel.frame.origin.x, cell.expLabel.frame.origin.y, expectedLabelSize.width, expectedLabelSize.height);




return cell;

}
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath {
dataCell *cell = (dataCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
CGSize maximumLabelSize = CGSizeMake(220, FLT_MAX);
[cell.expLabel setText:[expData objectAtIndex:indexPath.row]];
CGSize expectedLabelSize = [cell.expLabel.text sizeWithFont:cell.expLabel.font constrainedToSize:maximumLabelSize lineBreakMode:cell.expLabel.lineBreakMode];
if (expectedLabelSize.height<43) {
    expectedLabelSize.height=43;
}

return expectedLabelSize.height;  }

どんな助けでも大歓迎です

4

1 に答える 1