1

私はしばらくの間試してみましたが、解決策を見つけることができないようです。テーブルビューでセルスタイルを使用していてUITableViewCellStyleDefault、テキストが長くなりすぎたときにフォントのサイズを変更しようとしています。

セルの作成

static NSString *CellIdentifier = @"thisMonthCell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {
    cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
    cell.selectionStyle = UITableViewCellSelectionStyleGray;

    [cell.textLabel setTextColor:[UIColor darkGrayColor]];
    [cell.textLabel setAdjustsFontSizeToFitWidth:YES];
    [cell.textLabel setMinimumFontSize:14];

    UILabel *valueLabel = [[UILabel alloc]initWithFrame:CGRectMake(190, 10, 100, 20)];
    [valueLabel setBackgroundColor:[UIColor clearColor]];
    valueLabel.tag = 1001;
    [valueLabel setTextAlignment:UITextAlignmentRight];
    [cell addSubview:valueLabel];

}

Expense *expense = [[self.dataHandler monthExpenses]objectAtIndex:indexPath.row];

UILabel *value = (UILabel*)[cell viewWithTag:1001];
[cell.textLabel setText:[expense name]];

if ([[expense value]doubleValue] > 0) {
    [value setText:[NSString stringWithFormat:@"+%.2f",[[expense value]doubleValue]]];
    [value setTextColor:[self greenColor]];    

}
else{
    [value setText:[NSString stringWithFormat:@"%.2f",[[expense value]doubleValue]]];
    [value setTextColor:[self redColor]];    
}
return cell;

textLabelしかし、テキストが長すぎると、どういうわけかサイズが変更されません。

これが問題を示すスクリーンショットです:

自動サイズ設定が失敗する

何か案は?

UPDATE私は、standardLabelを削除し、カスタムラベルを追加することで、目標を達成することができました。標準のものでは機能しないのは奇妙なことです。

4

2 に答える 2

2

これを試してcell.textLabel.numberOfLines = 0; cell.textLabel.lineBreakMode = UILineBreakModeWordWrap

于 2012-04-21T16:01:25.310 に答える
0

値ラベルを作成する場合にも、次の2行のコードを使用します。

valueLabel.lineBreakMode = UILineBreakModeWordWrap;
valueLabel.numberOfLines = 0;

編集済み-セルの高さを変更するには-

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    NSString *cellText = @"oooooooooooooooooooo"; //Text that you are using
    UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:16.0]; //Whatever font you are using.
    CGSize constraintSize = CGSizeMake(280.0f, MAXFLOAT);
    CGSize labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];

    return labelSize.height + 25.0; //25.0 is offset, you can change as per need

}

于 2012-04-20T08:17:53.220 に答える