3

中央のセル テキストを揃えることができません。XML の問題ではないでしょうか。

UILabel を作成し、中央に揃えてセルに追加しています。これは私のコードの例です:

 if (cell==nil)
{
cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
UILabel *lblMenuTitle = [[UILabel alloc] initWithFrame:CGRectMake(20, 10, 250, 30)];
NSString *sectionString = [NSString stringWithFormat:@"%@",[[arrDataSection objectAtIndex:indexPath.row] valueForKey:kCasesName]];
[lblMenuTitle setText:sectionString];
[lblMenuTitle setTextAlignment:UITextAlignmentCenter];
lblMenuTitle.font = [UIFont boldSystemFontOfSize:18.0];
    [lblMenuTitle setNumberOfLines:0];
    [lblMenuTitle setTag:[[NSString stringWithFormat:@"1%d",indexPath.row] intValue]];
    [lblMenuTitle setLineBreakMode:UILineBreakModeWordWrap];
[lblMenuTitle setBackgroundColor:[UIColor clearColor]];
[cell addSubview:lblMenuTitle];

CGRect frame;
    CGSize size;

    frame = CGRectMake(20, 5, 250, 30);

    size = [lblMenuTitle.text sizeWithFont:[UIFont systemFontOfSize:18.0]
                               constrainedToSize:CGSizeMake(frame.size.width, 9999)
                                   lineBreakMode:UILineBreakModeWordWrap];

    frame.size = CGSizeMake(size.width+20, size.height);

    lblMenuTitle.frame = frame;
  }

  return cell;
4

1 に答える 1

4

テキストのサイズ ( ) を計算し、ラベルsize = [lblMenuTitle.text sizeWithFont:…]のフレームを変更してlblMenuTitle、その幅がテキストのサイズ (+20px) になるようにします…</p>

したがって、テキストがセルの中央に配置されないのはごく普通のことです。テキストは UILabel( [lblMenuTitle setTextAlignment:UITextAlignmentCenter]) の中央に配置されますが、ラベルはテキスト自体と同じ幅です。したがって、テキストの幅が 100px の場合、ラベルの幅は 120px になりますが、フレームの原点は x=20 のままです!

ラベルの幅をセルの幅と同じ大きさに保ち、テキストの配置でテキストをラベルの中央に配置するか、ラベルのサイズをテキストと同じ幅に変更したい場合は、フレームも中央に配置します (lblMenuTitle.center = cell.center例えば)

于 2012-05-27T11:08:17.450 に答える