保持UITableView的填充标题,但没有IOS7分隔符

随着iOS7的转换,分隔符左侧有15px的填充。 我知道我可以在xib文件中的UITableView设置中删除带有分隔符插入function的填充,但是我需要使用填充保留标题文本。 怎么做?

默认:

在这里输入图像说明

自定义分隔符插入到0:

在这里输入图像说明

我需要像图2一样保留分隔符,但像“1”一样的“2013”​​的标题。

对于Seperator,你可以通过Storyboard进行设置

并为头做一个像这样的自定义头

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { UIView *viewHeader = [UIView.alloc initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, 28)]; UILabel *lblTitle = [UILabel.alloc initWithFrame:CGRectMake(6, 3, 136, 21)]; [lblTitle setFont:[UIFont fontWithName:@"HelveticaNeue" size:13]]; [lblTitle setTextColor:[UIColor blackColor]]; [lblTitle setTextAlignment:NSTextAlignmentLeft]; [lblTitle setBackgroundColor:[UIColor clearColor]]; [viewHeader addSubview:lblTitle]; return viewHeader; } 

给它任何特定的高度。 并给它任何文字。 做一个包含你的年份的部分标题数组。

使用SWIFT和STORYBOARD

在故事板中,您可以为TableView(标题)和Cells(分隔符)设置不同的分隔符。

通过selectStoryboard中的单元格并设置以下内容,将单元格的分隔符插入单元格设置为0:

在这里输入图像说明

然后通过selectStoryboard中的TableView并设置以下内容,将TableView(针对标题)的分隔符插入设置为15:

在这里输入图像说明

可选的:

您可能还需要将单元格上的边距设置为零,以确保分隔符从左到右一路向前。 如果需要,可以在表格视图控制器的swift文件中使用下面的代码:

 override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier("YOURCELL", forIndexPath: indexPath) as! UITableViewCell // THIS IS THE IMPORTANT PART... cell.layoutMargins = UIEdgeInsetsZero cell.preservesSuperviewLayoutMargins = false return cell } 

你可能不想创build一个自定义的标题视图,因为有时它是一个矫枉过正或者它需要一些试验和错误,使其完全像默认的部分标题。 相反,有一个简单的黑客不需要返回自定义标题视图。 只需将您的分隔符缩进设置为0,并在标题string中放置一些前导空格。

在这里输入图像说明

 - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { return @" Your Title"; } 

UITableView有一个名为viewForHeaderInSection的委托方法。 如果你删除了填充,然后在委托方法中添加一个填充并返回节标题视图。

 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{ UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(tableView.frame), 30)]; UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(15, 5, 200, 25)]; // 15 pixel padding will come from CGRectMake(15, 5, 200, 25). label.text = @"2013"; [view addSubview: label]; return view; } 

你可以devise你的标题视图,你喜欢什么。 为了设置tableView头的高度,使用:

 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section; 

希望它可以帮助你…)

如果你想从左边距缩进Section文本,这是一个简单的方法,我做到了。 在函数中,看第一个引号后面的空格吗? 在文本开始之前放置尽可能多的空间。

 func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { let title: UILabel = UILabel() title.text = " \(sortedSections[section])" title.textAlignment = NSTextAlignment.Left return title } 

你可以在表(和页眉/页脚)和单元本身上设置插入:

 -(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{ if ([tableView respondsToSelector:@selector(setSeparatorInset:)]) { [tableView setSeparatorInset:UIEdgeInsetsMake(0, 10, 0, 0)]; } if ([tableView respondsToSelector:@selector(setLayoutMargins:)]) { [tableView setLayoutMargins:UIEdgeInsetsMake(0, 10, 0, 0)]; } if ([cell respondsToSelector:@selector(setLayoutMargins:)]) { [cell setLayoutMargins:UIEdgeInsetsZero]; } } 

在你的cellForRowAtIndeaPath方法中添加一个视图到单元格中

 UIView* view = [[UIView alloc] initWithFrame:CGrectmake(cell.frame.ori.x, cell.frame.ori.y, 20.0, cell.height)]; view.backgroundColor = desired color [cell.containView addSubView: view]; 

添加到您的第一个单元格代码,你就完成了