iOS开发之TableView实现完整的分割线详解

在iOS开发中, tableView是我们最常用的UI控件之一。所以这篇文章主要给大家详细介绍了关于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 的分割线完整的显示出来. 小伙伴们,赶紧试试吧.  如果有什么更好的办法,或者是其他的思路可以留言交流。 同时非常欢迎提出宝贵的意见.希望本文的内容对大家的学习或者工作能带来一定的帮助。

您可能感兴趣的文章:

  • 解决iOS11刷新tableview会出现漂移的现象
  • IOS实现左右两个TableView联动效果
  • iOS tableView实现单选和多选的实例代码
  • 详解iOS开发中UItableview控件的数据刷新功能的实现
  • iOS中TableView如何统一数据源代理详解

相关推荐:

Python定时任务教程_APScheduler使用详解

APScheduler是Python中功能强大且灵活的定时任务调度库,支持内存级或持久化级任务管理,提供BlockingScheduler、BackgroundScheduler和AsyncIOScheduler三种常用调度器,以及date、interval、cron四种触发器,并建议生产环境使用S...

iOS中Safari点击事件失效怎么办

小编给大家分享一下iOS中Safari点击事件失效怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!问题描述当使用委托给一个元素添加click事件时,如果事件是委托到document或body上,并且委托的元素是默认不可...

开发者必备实用工具

工欲善其事必先利其器,今天给大家推荐一些程序员(开发者)用得上的实用开发工具,部分下载地址已经在链接中,需要的话可以自取。 1、文本编辑器——Notepad++ 相信绝大部分程序员用上它都会爱得死去活来。Notepad++是一套非常有特色的自由软件的纯文字编辑器。支持27种编程语言,通吃C,C++,...

如何使用iOS开发实现翻转扑克牌动画

这篇文章主要介绍了如何使用iOS开发实现翻转扑克牌动画,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。动画效果实现原理实现原理就是创建三个扑克牌pockerView,先在扑克牌上添加一个imageview,作为牌的背面。然后实现翻转动画...

iOS浮点类型精度问题的原因与解决办法是什么

这篇文章主要为大家分析了iOS浮点类型精度问题的原因与解决办法是什么的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“iOS浮点类型精度问题的原因与解决办法是什么”的知识吧。前言相信不少人(其实我觉得应该是每个人)都遇到...

RecyclerView使用大全

RecylerView介绍RecylerView是support-v7包中的新组件,是一个强大的滑动组件,与经典的ListView相比,同样拥有item回收复用的功能,这一点从它的名字recylerview即回收view也可以看出。官方对于它的介绍则是:RecyclerView是ListView的升...

IOS如何实现三数之和

小编给大家分享一下IOS如何实现三数之和,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、三数求和简单介绍对于一个整数的数组,是否存在a,b,c使得a+b+c=0,返回abc数组,相同数组只返回一个,:例如:[-1,-2,...

利用python怎么在ios中模拟一个点击事件

利用python怎么在ios中模拟一个点击事件?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。代码示例Python Version import socket import time # eve...