0

アプリで非常に奇妙な問題が発生しています。テーブル ビュー セルを動的に作成しています。また、コンテンツに応じてセル ラベルの高さを調整します。

私の問題は、ラップ後にセルラベルが最後の行を表示しないことです。つまり、ラベルに合計3行ある場合、ラベルには2行しか表示されません。コードは iOS6 では機能していましたが、iOS 7 では問題が発生しています。

 [labelCell.contentView bringSubviewToFront:labelCell.textLabel];
 labelCell.textLabel.numberOfLines = 0;
 labelCell.textLabel.lineBreakMode = NSLineBreakByWordWrapping;
 NSString *fieldLabel = labelCell.textLabel.text;
 CGSize textSize = [self sizeForLabelWithString:fieldLabel width:600.0f  andIndexPath:indexPath];
 float newHeight = textSize.height+22.0f;
 labelCell.height = newHeight;
4

3 に答える 3

1

この方法を使用します。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
     NSString *fieldLabel = labelCell.textLabel.text;

    CGSize textSize = [fieldLabel sizeWithFont:[UIFont fontWithName:@"Georgia" size:17.0f] constrainedToSize:CGSizeMake(600, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping];
    float newHeight = textSize.height+22.0f;
    return newHeight;
}

以下のコードを cellForRowAtIndexPath に追加します

UILabel *lblfield=[[UILabel alloc] init];
NSString *fieldLabel=[NSString stringWithFormat:@"%@",labelCell.textLabel.text];
CGSize textSize = [fieldLabel sizeWithFont:[UIFont fontWithName:@"Georgia" size:17.0f] constrainedToSize:CGSizeMake(600, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping];
float newHeight = textSize.height+22.0f;
lblfield.frame=CGRectMake(10, 0, 600, newHeight);
lblfield.backgroundColor=[UIColor clearColor];
lblfield.text=strusername;
[cell addSubview:lblfield];
于 2013-10-29T07:10:47.960 に答える
0

コンテンツに基づいてラベルの高さを変更しています。したがって、セルの高さを動的に処理するか、コンテンツに基づいてセルの高さを設定する必要があります(文字列の最大値)。すなわち

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return MAXStringHeght;
}

そして一度やってみる。

于 2013-10-29T07:06:57.277 に答える