Ios UITableview标题和顶部单元格之间的间距
我的UITableView有一些奇怪的行为 我的UITableView标题和第一个单元格之间有间距。知道为什么吗Ios UITableview标题和顶部单元格之间的间距,ios,objective-c,uitableview,Ios,Objective C,Uitableview,我的UITableView有一些奇怪的行为 我的UITableView标题和第一个单元格之间有间距。知道为什么吗 #define kDefaultTableViewSectionHeight 50 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.posts.count; } - (NSInteger)numberOfSectio
#define kDefaultTableViewSectionHeight 50
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return self.posts.count;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return kDefaultTableViewCellHeight;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return kDefaultTableViewSectionHeight;
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, kDefaultTableViewSectionHeight)];
UIButton *hot = [[UIButton alloc] initWithFrame:CGRectMake(self.view.frame.size.width/2, 0, 100, kDefaultTableViewSectionHeight)];
UIButton *new = [[UIButton alloc] initWithFrame:CGRectMake(self.view.frame.size.width/2-100, 0, 100, kDefaultTableViewSectionHeight)];
UIView *underline = [[UIView alloc] initWithFrame:CGRectMake(new.frame.origin.x, view.frame.size.height-10, 70, 1)];
UIView *border = [[UIView alloc] initWithFrame:CGRectMake(0, view.frame.size.height-1, view.frame.size.width, 1)];
[border setBackgroundColor:[UIColor colorWithRed:50.0/255.0 green:50.0/255.0 blue:50.0/255.0 alpha:1]];
self.underline = underline;
if (self.new)
[underline setCenter:CGPointMake(new.center.x, underline.center.y)];
else
[underline setCenter:CGPointMake(hot.center.x, underline.center.y)];
[underline setBackgroundColor:[UIColor whiteColor]];
[view setBackgroundColor:[UIColor blackColor]];
[hot setTitle:@"Hot" forState:UIControlStateNormal];
[hot setTag:2];
[hot setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[hot addTarget:self action:@selector(selectQueryType:) forControlEvents:UIControlEventTouchUpInside];
[hot.titleLabel setFont:[UIFont fontWithName:@"Avenir-Heavy" size:20.0]];
[new setTitle:@"New" forState:UIControlStateNormal];
[new setTag:1];
[new setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[new addTarget:self action:@selector(selectQueryType:) forControlEvents:UIControlEventTouchUpInside];
[new.titleLabel setFont:[UIFont fontWithName:@"Avenir-Heavy" size:20.0]];
[view addSubview:new];
[view addSubview:hot];
[view addSubview:underline];
[view addSubview:border];
return view;
}
我尝试了以下代码来解决此问题,但这只是减少了UITableView顶部和UINavigationBar之间的空间:
/*
if ([[UIDevice currentDevice].systemVersion floatValue] >= 7){
self.postTableview.contentInset = UIEdgeInsetsMake(-8, 0, 0, 0);
} */
但这只是减少了UITableView顶部和UINavigationbar之间的间距
我认为您将
tableHeaderView
属性与节头视图混淆了。您正在调用的委托方法tableview:viewForHeaderInSection:
设置节的标题,而不是UITableView
本身的标题。在-numberOfSectionsInTableView:
中,您只返回1个节,因此您只需将自定义头添加为tableview的头,而不是tableview中第一个节的头。这并不能解决您的具体问题,但考虑到tableview中只有一个部分,这似乎是一个更好的应用程序解决方案
在-viewDidLoad
中,只需将tableHeaderView
属性设置为自定义视图,如下所示:
- (void)viewDidLoad{
//...
_tableview.tableHeaderView = [self myTableHeader];
}
- (UIView *)myTableHeader{
//Return custom header view
}
这里有另一个问题,您可能会找到@ClaudioRedi的答案。我的问题不同,因为间距从标题开始,在第一个单元格的顶部结束。其中一个答案是关于将节标题设置为0。我建议您进行更深入的研究,因为有许多不同的答案。您是否使用委托设置headerView?您是否检查了由以下内容返回的高度:
-(CGFloat)tableView:(UITableView*)tableView heightForHeaderInSection:(NSInteger)节代码>kDefaultTableViewSectionHeight*50*
从图像中我想它大约在35左右,或者其他一些尝试声明较小的值到kDefaultTableViewSectionHeight
@0yeoj是的,这在我上面问题的代码中我想让标题保持在顶部,正如你滚动所想的那样