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 回答