UITableView分隔线


Answers:


93

separatorStyletableview的设置为UITableViewCellSeparatorStyleNone。将分隔符图像作为子视图添加到每个单元格,并正确设置框架。


1
请给我一个例子。
Mobile Developer iOS Android

[separatorImageView setFrame:CGRectMake(0,0,cell.frame.size.width,spacerImageView.image.size.height)];
菲利克斯(Felix)

[cell.imageView setFrame:CGRectMake(0,0,cell.frame.size.width,cell.frame.size.height)];无法做到这一点:(
cV2 2011年

当单元格不填满屏幕时,普通的UITableView会绘制那些呢?
Christian Schnorr 2012年

4
遗憾的是,由于分隔线错误,此答案仍然是最佳答案。
2014年

61

试试这个

目标C

  [TableView setSeparatorStyle:UITableViewCellSeparatorStyleSingleLine];

  [TableView setSeparatorColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"Divider_line@2x.png"]]];

迅速

    tableView.separatorStyle = UITableViewCellSeparatorStyle.SingleLine
    tableView.separatorColor = UIColor(patternImage: UIImage(named: "YOUR_IMAGE_NAME")!)

1
很棒的答案谢谢!
Septronic

谢谢@ Sakshi-我设置了分隔色而不是图像,它看起来也很棒。table.separatorStyle = UITableViewCellSeparatorStyle.SingleLine table.separatorColor = UIColor(red: 245/255, green: 245/255, blue: 245/255, alpha: 1.0)
fs_tigre

29

首先,您可以编写代码:

{    [self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];}

之后

{    #define cellHeight 80 // You can change according to your req.<br>
     #define cellWidth 320 // You can change according to your req.<br>

    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath  *)indexPath
    {
         UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"seprater_line.png"]];
        imgView.frame = CGRectMake(0, cellHeight, cellWidth, 1);
        [customCell.contentView addSubview:imgView];
         return  customCell;

     }
}

3
像这样的解决方案的问题是,仅向该单元格添加一个子视图,tableView:cellForRowAtIndexPath:因为它们每次重用该单元格都会添加一个新的视图,而永远不会删除旧的视图。它只能添加一次,因此您可以在UITableViewCell子类中进行添加。
加文2015年


5

我的项目基于iOS 7,这对我有帮助

[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];

然后将子视图放入单元格中作为分隔符!


1
那不能回答问题。
King-Wizard

4

试试这个:

UIImageView *separator = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"separator.png"]];
[cell.contentView addSubview: separator];

那是我如何使其运作良好的一个示例。

切记将表格视图的分隔符样式设置为none。


4

您可以添加一个UIImageView,例如,其高度为1点并且与单元格的框架一样宽,然后将其原点设置为该单元格的左下角。


6
不要忘记关闭表格视图的默认分隔符样式:[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
Jasarien 2011年

您能给我粗略的代码以便我开始吗,如何将其原点设置到单元格的左下角?
Mobile Developer iOS Android

3

这是通过XCode 10.2.1中的情节提要实现此目的的方法。分隔符默认为default哪一行。设置none为删除该行。

tableview_separator


2

这绝对是有帮助的。加工。但是将属性检查器的分隔符设置为“ none”。在cellForRowAtIndexPath 方法中编写以下代码

 UIView *lineView = [[UIView alloc] initWithFrame:CGRectMake(0,           
 cell.contentView.frame.size.height - 1.0,      
 cell.contentView.frame.size.width, 1)];

    lineView.backgroundColor = [UIColor blackColor];
    [cell.contentView addSubview:lineView];

我什[cell.contentView bringSubviewToFront:lineView];至尝试了这一点,但除了最右边和最左边外,大部分都没有显示。
蒂莫西·斯旺

2

迅捷3/4

自定义分隔线,请将以下代码放在UITableViewCell的子类的自定义单元中(或在非自定义单元的CellForRow或WillDisplay TableViewDelegates中):

let separatorLine = UIView.init(frame: CGRect(x: 8, y: 64, width: cell.frame.width - 16, height: 2))
separatorLine.backgroundColor = .blue
addSubview(separatorLine)

在viewDidLoad方法中:

tableView.separatorStyle = .none

0

如果要更改默认选项(无分隔符,实线或蚀刻线),则有2个选项可以更改uitableview的分隔符样式。

  1. 最简单的方法是在每个单元格视图中包含分隔线背景图像。您可以检查表格视图中单元格的位置,然后应用正确的背景图像,该背景图像将在单元格顶部或底部提供分隔线。

    在tableview的viewDidLoad中将分隔符样式设置为none:

    [self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];

    在(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath函数中设置背景图像

     UIImage* yourBgImg = [[UIImage imageNamed:@"bgImage.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(5, 5, 5, 5)];
    

    cell.backgroundView = [[UIImageView alloc] initWithImage:yourBgImg];

    使用以下命令检查单元格在该部分中的位置:

    NSInteger sectionRows = [tableView numberOfRowsInSection:[indexPathsection]]; NSInteger行= [indexPath行];

  2. 将分隔线添加为单元格。我最近在这里找到了一个帖子:http : //www.dimzzy.com/blog/2012/01/separator-cells-for-uitableview/#disqus_thread

0

您可以尝试以下操作:

UIView *separator = [[UIView alloc] initWithFrame:CGRectMake(0, cell.contentView.frame.size.height - 1.0, cell.contentView.frame.size.width, 1)];
separator.backgroundColor = myColor;
[cell.contentView addSubview:separator];

要么

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
   UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"separator.png"]];
   imageView.frame = CGRectMake(0, 100, 320, 1);
   [customCell.contentView addSubview:imageView];

   return customCell;
}

0

这是一种替代方法,可以UITableView通过CALayer为图像添加a并将其用作分隔线来向其中添加自定义分隔线。

//为分隔线的图像制作一个CALayer

CALayer *separator = [CALayer layer];
separator.contents = (id)[UIImage imageNamed:@"myImage.png"].CGImage;
separator.frame = CGRectMake(0, 54, self.view.frame.size.width, 2);
[cell.layer addSublayer:separator];

0

在情节提要面板本身中可以完成在每个tableview单元下面添加分隔线的最简单方法。首先选择表格视图,然后在属性检查器中选择分隔线属性为单行。此后,选择要自定义的分隔符插图,并将左边的插图更新为左侧的0。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.