设置分组表中标题的视图时出现问题

时间:2013-07-31 07:01:36

标签: ios css header

我正在尝试为分组表中的部分自定义标头。我为表格中的第一部分设置的视图看起来很好,但后续的部分标题看起来像在顶部和底部裁剪(在此屏幕截图中它只显示在顶部):

iPhone_groupedTable_header

我一直在为frame.size.origin尝试不同的X和Y值,但它看起来仍然一样。这是我的代码:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
   if (section == 1) {
          UIView *wrapper = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, 70)];
          [wrapper setBackgroundColor:[UIColor clearColor]];

          UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 20, self.tableView.frame.size.width, 20)];
          label.text = NSLocalizedString(@"Section 2 Header", @"");
          [label setFont:[UIFont boldSystemFontOfSize:15]];
          [label setBackgroundColor:[UIColor clearColor]];

          [wrapper addSubview:label];

          return wrapper;
   }

   else
          return nil;
}

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
   if (section == 1)
          return 70;
   else
          return 0;
}

我对所有节标题都这样做,只有第一个标题正确显示,我可能做错了什么?关于这个问题,是否可以动态地知道UILabel一旦知道其文本和字体大小将会采取的高度,或者您是否应该始终“猜测”它的帧大小? heightForHeaderInSection:方法中设置的标题的视图高度相同。

谢谢!

1 个答案:

答案 0 :(得分:0)

您没有为此代码中第1部分以外的部分设置标题的高度,您应该删除if(section == 1)条件并为每个部分提供公共高度,然后检查

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
   if (section == 1)
          return 70;
   else
          return 0;
}

感谢, 米塔尔。