UITableView如何添加自定义UIImageView作为分隔符并设置自定义位置

时间:2014-01-15 08:46:10

标签: ios objective-c uitableview uiimageview

我有一个带有许多部分(不是行)的UITableView。我想在中心的每个部分之间添加UIImageView作为分隔符(除了最后一个单元格)。 细胞之间的空间是30

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


- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIView *headerView = [[UIView alloc] init];
    headerView.backgroundColor = [UIColor clearColor];
    return headerView;
}

截图

我想在屏幕截图中设置位置。 enter image description here

我做的代码

[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];

细胞高度为81。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    //Some code
    UIImageView *separatorIView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 96, 196, 2)];
    [separatorIView setImage:[UIImage imageNamed:@"grayline.png"]];
    [cell.contentView addSubview:separatorIView];
    return cell;
}

如果我设置y坐标<那么细胞高度。 提前致谢。

结果

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

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIView *headerView = [[UIView alloc] init];
    headerView.backgroundColor = [UIColor clearColor];
    if (section > 0) {
        UIImageView *img = [[UIImageView alloc] initWithFrame:CGRectMake(62, 14, 196, 2)];
        [img setImage:[UIImage imageNamed:@"grayline.png"]];
        [headerView addSubview:img];
    }
    return headerView;
}

4 个答案:

答案 0 :(得分:1)

在设置头视图高度时,可以在标题中添加分隔符。 Table View有一个名为“viewForHeaderInSection”的委托方法。

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
      UIImageView *img = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 5)];
      [img setImage:[UIImage imageNamed:@"grayline.png"]];
      return img;
 }

如果在此委托方法中设置分隔符图像,则无需在cellForRowAtIndexPath中执行任何操作。 如果有帮助,请告诉我......:)

修改

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

`

答案 1 :(得分:1)

自定义分隔符位置是不可能的,因为它们是专门为其框架定义的,除此之外,如果您需要这种效果,那么您必须在标题中添加图像,如自定义空间和颜色,需要视图只有你可以获得理想的观点

答案 2 :(得分:0)

您可以使用setSeparator颜色设置分隔符颜色,您可以在其中传递图像

[self.tableView setSeparatorColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"grayline.png"]]];

答案 3 :(得分:0)

尝试将最后一个标题的高度设为零,看看它是否有效。

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
  if(make_cndition_for_lastsection)
    return 0;
  else
    return  30;
}