通过故事板中的更改得到UITableViewStyleGrouped
和UITableViewStylePlain
,发现普通表视图的上边缘粘在导航栏上,而由于标题视图,以某种方式分组样式的顶部间隙。
但是,如图所示,差距“a”大于“b”,为什么? “a”周围是否有任何隐藏元素?如何管理这个差距,以便它也可以卡住吧?
差距“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”总是存在而且没有改变。
奇怪的是,页眉和页脚的高度仍然存在,看起来是一个最小高度,
答案 0 :(得分:1)
不确定为什么您的问题正在发生,但是要获得分组的tableview"卡住"在导航栏的底部:
CGFloat myInset = *HEIGHT OF GAP A*
self.tableView.contentInset = UIEdgeInsetsMake(-myInset, 0, 0, 0);
答案 1 :(得分:1)
只需在ViewDidLoad
方法中添加此代码:
self.automaticallyAdjustsScrollViewInsets = NO;
答案 2 :(得分: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
答案 3 :(得分: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);
}
}
Bugreport问题#14310190
答案 4 :(得分: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将不起作用。它似乎具有表视图恢复到某个默认空标题或节的效果。
答案 5 :(得分:0)
对于那些仍然感兴趣的人来说,表视图顶部有空格的原因是因为这是TableView的默认标题。要获得它,只需将其添加到tableViewController
即可self.tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.tableView.bounds.size.width, 0.0f)];
这将在视图控制器的顶部绘制它。您可以将0.0的值更改为您想要的任何值。
答案 6 :(得分:0)
在表格视图的heightForFooterInSection API中返回最小值(不是0)(比如0.1)。这将从黄色和红色显示的部分底部删除默认空间(大约10 px)。