iOS开发之TableView实现完整的分割线详解
前言
在我们创建一个tableView的时候,细心的你有没有发现UITableViewCell左侧会有空白。而我们在开发中有这样的需求: 需要一根完整的分割线(去掉烦人的空白部分, 即分割线的宽度 == 屏幕的宽度)。
那么下面我就讲一讲该如何去掉空白的部分,显示完整的分割线。
这里我提供两种方法 :
第一种方法,也是我们最常用的方法,也是在我们自定义cell的时候所用到的. 即去掉tableView默认的分割线,自定义cell,重写setFrame: 方法即可
下面是具体代码实现:
步骤一 : 移除系统默认的分割线
// 设置分割线的样式为None. self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
tableView有个separatorStyle属性, 即分割线的样式.这是一个枚举类型. 我们按着command点击它进入他的属性中会发现如下代码:
typedef NS_ENUM(NSInteger, UITableViewCellSeparatorStyle) { UITableViewCellSeparatorStyleNone, //不显示分割线 UITableViewCellSeparatorStyleSingleLine,// 单线 UITableViewCellSeparatorStyleSingleLineEtched // 这种分离式仅支持分组样式表视图 // This separator style is only supported for grouped style table views currently }
步骤二 : 重写setFrame: 方法
注意重写setFrame: 方法是需要我们写在UITableViewCell中的, 上面也说过,这种方法适用于自定义cell.
下面是代码:
- (void)setFrame:(CGRect)frame { frame.origin.y += 1; // 让cell的y值增加1(根据自己需要分割线的高度来进行调整) frame.size.height -= 1; // 让cell的高度减1 [super setFrame:frame]; // 别忘了重写父类方法 }
通过上面两个步骤,就会去掉系统默认的分割线,生成我们自己的分割线. 这种方法是不是很简单呢? 如果需要自定义分割线的颜色,只需要设置`separatorColor`为你需要的颜色就可以啦.
第二种方法也很简单,此方法不需要我们自定义cell,使用默认的tableViewcell也可以成功.这里需要说明说的是:
ios7中,UITableViewCell左侧会有默认15像素的空白.设置
setSeparatorInset:UIEdgeInsetsZero能将空白去掉.
ios8中,
setSeparatorInset:UIEdgeInsetsZero的设置已经不起作用了.
下面是解决办法,首先在viewDidLoad方法加入以下代码:
if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) { // 如果tableView响应了setSeparatorInset: 这个方法,我们就将tableView分割线的内边距设为0. [self.tableView setSeparatorInset:UIEdgeInsetsZero]; } if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) { // 如果tableView响应了setLayoutMargins: 这个方法,我们就将tableView分割线的间距距设为0. [self.tableView setLayoutMargins:UIEdgeInsetsZero]; }
然后在UITableView的代理方法中加入以下代码
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { // 这两句的含义跟上面两句代码相同,就不做解释了 if ([cell respondsToSelector:@selector(setSeparatorInset:)]) { [cell setSeparatorInset:UIEdgeInsetsZero]; } if ([cell respondsToSelector:@selector(setLayoutMargins:)]) { [cell setLayoutMargins:UIEdgeInsetsZero]; } }
总结
以上就是这篇文章的全部内容了,通过上述两个步骤也可以实现让cell 的分割线完整的显示出来. 小伙伴们,赶紧试试吧. 如果有什么更好的办法,或者是其他的思路可以留言交流。 同时非常欢迎提出宝贵的意见.希望本文的内容对大家的学习或者工作能带来一定的帮助。
您可能感兴趣的文章:
- iOS开发小技巧--tableView中实现无数据无分割线,有数据才有分割线
- iOS 开发-实现TableView的编辑功能以删除数据
- 芒果iOS开发之iOS9TableView分割线默认不显示,只有滑动的时候才显示
- ios开发技巧之tableView去掉多余的空行分割线 自定义cell分割线
- iOS开发-UI控件:使用TableView实现多级树型menu
- IOS开发笔记——实现tableView的headerView跟随cell滑动
- iOS开发技巧-tableView去掉多余的空行分割线,自定义Cell分割线
- ((ios开发学习笔记九)) Simple TableView 实现(附 实例源码)
- iOS开发技巧-tableView去掉多余的空行分割线,自定义Cell分割线
- ((ios开发学习笔记 十一))自定义TableViewCell 的方式实现自定义TableView(带源码)
- iOS开发tableView实现单选和复选
- IOS详解TableView——实现九宫格效果
- IOS详解TableView——对话聊天布局的实现
- iOS开发用Tableview实现能改变字体颜色的高仿系统的ActionSheet
- iOS开发tableview二级联动的细节实现中注意的细节总结
- IOS开发之TableView详解
- iOS开发:代码通用性以及其规范 第二篇(猜想iOS中实现TableView内部设计思路(附代码),以类似的思想实现一个通用的进度条)
- 详解iOS开发中UItableview控件的数据刷新功能的实现
- iOS开发tableView分割线顶格,以及隐藏多余的单元格
- iOS开发之UICollectionView的headerView实现与TableView一样的漂浮效果