全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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  # 分割线  # tableviewcell分割线  # 分割线高度  # 解决iOS11刷新tableview会出现漂移的现象  # IOS实现左右两个TableView联动效果  # iOS tableView实现单选和多选的实例代码  # 详解iOS开发中UItableview控件的数据刷新功能的实现  # iOS中TableView如何统一数据源代理详解  # 自定义  # 重写  # 会有  # 设为  # 种方法  # 两句  # 就将  # 自己的  # 的是  # 有什么  # 我就  # 就会  # 这种方法  # 有个  # 不需要  # 为你  # 两种  # 中有  # 其他的 


相关文章: Swift开发中switch语句值绑定模式  成都网站制作报价公司,成都工业用气开户费用?  建站主机系统SEO优化与智能配置核心关键词操作指南  山东网站制作公司有哪些,山东大源集团官网?  道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?  如何快速生成高效建站系统源代码?  建站之星如何取消后台验证码生成?  php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  建站之星如何实现五合一智能建站与营销推广?  建站之星安装后如何自定义网站颜色与字体?  网站制作费用多少钱,一个网站的运营,需要哪些费用?  建站DNS解析失败?如何正确配置域名服务器?  微信小程序 五星评分(包括半颗星评分)实例代码  企业宣传片制作网站有哪些,传媒公司怎么找企业宣传片项目?  黑客入侵网站服务器的常见手法有哪些?  网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?  Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  ,在苏州找工作,上哪个网站比较好?  定制建站方案优化指南:企业官网开发与建站费用解析  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  建站主机功能解析:服务器选择与快速搭建指南  广东企业建站网站优化与SEO营销核心策略指南  建站之星北京办公室:智能建站系统与小程序生成方案解析  全景视频制作网站有哪些,全景图怎么做成网页?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  网站app免费制作软件,能免费看各大网站视频的手机app?  导航网站建站方案与优化指南:一站式高效搭建技巧解析  建站与域名管理如何高效结合?  如何通过wdcp面板快速创建网站?  如何访问已购建站主机并解决登录问题?  网站制作新手教程,新手建设一个网站需要注意些什么?  三星网站视频制作教程下载,三星w23网页如何全屏?  开源网站制作软件,开源网站什么意思?  临沂网站制作企业,临沂第三中学官方网站?  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  如何用PHP快速搭建CMS系统?  建站上市公司网站建设方案与SEO优化服务定制指南  南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?  北京建设网站制作公司,北京古代建筑博物馆预约官网?  C#怎么创建控制台应用 C# Console App项目创建方法  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  大同网页,大同瑞慈医院官网?  已有域名和空间,如何快速搭建网站?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  如何用已有域名快速搭建网站?  如何选择可靠的免备案建站服务器?  h5在线制作网站电脑版下载,h5网页制作软件? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。