更改HeaderInSection的UITableView的高度?

时间:2015-05-21 09:50:42

标签: ios objective-c

UITableView的样式很简单,我想更改HeaderInSection的高度,但它仍然是默认高度22.0。

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if (tableView.tag == tableOrdersTag)
    {
        return 35;
    }
    else
    {
        return 0;
    }
}

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    if (tableView.tag == tableOrdersTag)
    {
        UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frameWidth, 35)];

        view.backgroundColor = COMMON_BACKGROUND_COLOR;

        DDLogVerbose(@"=========tableView  %f", tableView.sectionHeaderHeight);

        return view;
    }
    else
    {
        return nil;
    }
}

3 个答案:

答案 0 :(得分:1)

您的NSLog的地方

        return view;

可能会导致问题。它应该在返回方法之前:

tableView:viewForHeaderInSection 

将数字35改为100,你会发现它工作正常。

因为

的方法
tableView:heightForHeaderInSection.

落后于

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    NSLog(@"heightForHeaderInSection");
        return 100;
}

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{

        UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, 100)];

        view.backgroundColor = [UIColor redColor];
        NSLog(@"=========tableView  %f", tableView.sectionHeaderHeight);
        return view;
}

当我创建一个没有xib或故事板的TaleViewController时:

 2015-05-21 18:25:30.525 UITableViewHeaderDemo[24727:2350493] heightForHeaderInSection
 2015-05-21 18:25:30.526 UITableViewHeaderDemo[24727:2350493] heightForHeaderInSection
 2015-05-21 18:25:30.526 UITableViewHeaderDemo[24727:2350493] heightForHeaderInSection
 2015-05-21 18:25:30.526 UITableViewHeaderDemo[24727:2350493] heightForHeaderInSection
 2015-05-21 18:25:30.535 UITableViewHeaderDemo[24727:2350493] heightForHeaderInSection
 2015-05-21 18:25:30.535 UITableViewHeaderDemo[24727:2350493] heightForHeaderInSection
 2015-05-21 18:25:30.549 UITableViewHeaderDemo[24727:2350493] heightForHeaderInSection
 2015-05-21 18:25:30.549 UITableViewHeaderDemo[24727:2350493] heightForHeaderInSection
 2015-05-21 18:25:30.550 UITableViewHeaderDemo[24727:2350493] =========tableView  -1.000000

它将打印如下:

%// Making dummy data:
n = 10;
points = rand(n,2);
points(:,3) = randi(3,n,1);

%//Setting a colormap: note that you should not use a cell array for this!
c=[1 0 0; 0 1 0; 0 0 1]
colormap(c)

%//plot
scatter(points(:,1), points(:,2), [], points(:,3))

但是It works fine

答案 1 :(得分:1)

做这件事: -

  1. 打开界面构建器并选择表格视图。
  2. 现在,打开尺寸检查器。
  3. 查找设置剖面高度的选项。
  4. 在那里,你会找到页眉和页脚。将标题值设置为35。
  5. 试试这个。希望这能解决你的问题。

答案 2 :(得分:0)

首先从Xib更改部分高度,然后

在else中返回以下行而不是nil然后检查

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frameWidth, 0)];