默认高度对我来说太大了。 如何更改两个部分之间的高度?
=============================================== =============================
抱歉我的英语不好...... 我的意思是两个部分之间的差距太大了。如何改变?
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
CGRect frame = CGRectMake(0, 0, tableView.frame.size.width, 2.0f);
UIView *view = [[[UIView alloc] initWithFrame:frame] autorelease];
view.backgroundColor = [UIColor blueColor];
return view;
}
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
CGRect frame = CGRectMake(0, 0, tableView.frame.size.width, 2.0f);
UIView *view = [[[UIView alloc] initWithFrame:frame] autorelease];
view.backgroundColor = [UIColor redColor];
return view;
}
我更改了每个部分的页眉视图和页脚视图。 这是结果:
我认为差距可能有一个最小高度,因为我将页眉和页脚的高度设置为2px,但两个部分之间的差距仍然很大。
答案 0 :(得分:16)
您可以在每个部分之间使用页脚视图,并通过在UITableView的委托中实现以下方法为其提供所需空间的大小。
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
在第一个委托方法中,您可以返回一个简单的UIView实例,在第二个方法中,您可以返回该视图应该的高度。第二种委托方法应该允许您控制部分之间的差距。
答案 1 :(得分:4)
试用这段代码
self.tableView.rowHeight = 0; // in viewdidload
[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone]; // in viewdidload
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return 0.01f;
}
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return <your header height>;
}
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
return [[UIView alloc] initWithFrame:CGRectZero];
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
return <your header view>;
}
和Swift版本是
func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
return your footer view
}
func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return your footer view height
}
func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 0.01
}
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
return UIView.init(frame: CGRect.zero)
}
答案 2 :(得分:0)
你需要使用方法heightForHeaderInSection来定义header&amp;之间的空间。细胞文本。您也可以根据不同的部分进行更改,例如。在某些部分,您可能需要显示更多距离&amp;在某些情况下,你不想表现出差距。对于这种情况,您可以使用
CGFLOAT_MIN,其为0.000001f
。举个例子,你如何使用不同的标题高度的不同部分
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if (section == 0 || section == 2)
{
return 55.0;
}
else
{
return CGFLOAT_MIN;
}
}
希望它会对你有所帮助。
答案 3 :(得分:0)
对于那些想增加距离的人。
基于设置页眉/页脚高度的解决方案可能会有一个副作用:如果页眉或页脚有一些文本,它将在增加的页眉/页脚中垂直居中。
要解决此问题,您可以使用自定义的页眉/页脚视图,但是我建议您添加一个空白部分,在其中需要额外的间隙并为其设置页脚高度(如果为nil或空字符串,它将不会显示)。