2

通过情节提要UITableViewStyleGroupedUITableViewStylePlain变化,发现,普通表格视图的顶部边缘粘在导航栏上,而由于标题视图,分组样式的顶部间隙不知何故。

在此处输入图像描述

但是,如图所示,间隙“a”大于“b”,为什么?“a”周围是否有任何隐藏元素?如何管理这个差距,以便它也可以被 bar 卡住?

间隙“a”和“b”的默认大小是多少?如何使“a”等于“b”,如“设置”

在此处输入图像描述

下面是我的试用


尝试设置heightForHeaderInSection:viewForHeaderInSection:如下所示

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 0.0f;
}

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIView * header = [[UIView alloc] init];
header.backgroundColor = [UIColor redColor];
[self.view addSubview:header];

return header;
}

在此处输入图像描述


尝试过heightForFooterInSection:viewForFooterInSection:如下所示

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return 0.0f;
}

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
UIView * footer = [[UIView alloc] init];
footer.backgroundColor = [UIColor yellowColor];
[self.view addSubview:footer];
return footer;
}

在此处输入图像描述


看起来它们都没有按预期工作,间隙“a”始终存在并且没有改变。

奇怪的是,页眉和页脚的高度仍然存在,看起来是最小高度,

即使将它们的高度设置为零。

4

7 回答 7

1

只需在ViewDidLoad方法中添加此代码:

self.automaticallyAdjustsScrollViewInsets = NO;
于 2014-01-29T15:36:16.253 回答
1

不确定您的问题发生的确切原因,但是一种解决方法可以将分组的 tableview “卡”到导航栏的底部:

CGFloat myInset = *HEIGHT OF GAP A*
self.tableView.contentInset = UIEdgeInsetsMake(-myInset, 0, 0, 0);
于 2013-09-24T22:44:44.590 回答
0

在每个部分之前,您都有一个标题。在每个部分之后,您都有一个页脚。您标记为“a”的是第 0 节的页眉。您标记为“b”的是第 0 节的页脚和第 1 节的页眉的组合。

因此,要具有与设置应用程序相同的外观,您需要如下代码:

- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if (section == 0)
        return 20.0f;
    return 10.0f;
}

- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    return 10.0f;
}

请注意,返回 0 将不起作用。似乎表视图恢复到某些默认的空标题或部分的效果。

于 2013-09-27T16:04:22.053 回答
0

这是我从第一个测试版中打开的错误。同时它正在使用这个选项:

if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){
        if([UIScreen mainScreen].bounds.size.height == 568.0) {
            //iphone5
            sectionsTableView.frame = CGRectMake(0, 0, 320, 568);
        }
        else {
            //iphone4s
            sectionsTableView.frame = CGRectMake(0, 0, 320, 480);
        }
    }

错误报告问题 #14310190

于 2013-09-24T22:59:46.883 回答
0

我希望它可以帮助你。我认为您需要更改页脚高度。

实现那些 UITableView-delegate 方法:

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{

    return 50.0f;
}

或者这个委托方法

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

 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
于 2013-09-24T20:39:53.060 回答
0

返回表格视图的 heightForFooterInSection API(比如 0.1)中的最小值(不是 0)。这将从部分底部删除默认空间(大约 10 像素),如黄色和红色所示。

于 2014-08-30T15:30:40.133 回答
0

对于那些仍然感兴趣的人,表格视图顶部有空间的原因是因为这是 TableView 的默认标题。要摆脱它,只需将其添加到您的 tableViewController

self.tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.tableView.bounds.size.width, 0.0f)];

这将把它画在视图控制器的顶部。您可以将 0.0 的值更改为您想要的任何值。

于 2014-01-03T20:11:15.470 回答