前言

在我们创建一个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如何统一数据源代理详解
# 自定义
# 重写
# 会有
# 设为
# 种方法
# 两句
# 就将
# 自己的
# 的是
# 有什么
# 我就
# 就会
# 这种方法
# 有个
# 不需要
# 为你
# 两种
# 中有
# 其他的
相关文章:
如何快速生成ASP一键建站模板并优化安全性?
安徽网站建设与外贸建站服务专业定制方案
如何快速搭建高效WAP手机网站?
网站制作新手教程,新手建设一个网站需要注意些什么?
建站之星免费模板:自助建站系统与智能响应式一键生成
如何访问已购建站主机并解决登录问题?
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
建站之星代理费用多少?最新价格详情介绍
实现虚拟支付需哪些建站技术支撑?
如何续费美橙建站之星域名及服务?
如何通过PHP快速构建高效问答网站功能?
如何通过VPS建站实现广告与增值服务盈利?
香港服务器租用费用高吗?如何避免常见误区?
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
微信推文制作网站有哪些,怎么做微信推文,急?
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
建站之星安装后如何配置SEO及设计样式?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
香港服务器选型指南:免备案配置与高效建站方案解析
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
定制建站模板如何实现SEO优化与智能系统配置?18字教程
网站制作费用多少钱,一个网站的运营,需要哪些费用?
如何通过VPS搭建网站快速盈利?
建站之星与建站宝盒如何选择最佳方案?
如何在万网自助建站平台快速创建网站?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
三星网站视频制作教程下载,三星w23网页如何全屏?
如何在西部数码注册域名并快速搭建网站?
如何通过远程VPS快速搭建个人网站?
深圳网站制作培训,深圳哪些招聘网站比较好?
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
免费视频制作网站,更新又快又好的免费电影网站?
网站专业制作公司有哪些,做一个公司网站要多少钱?
建站之星2.7模板:企业网站建设与h5定制设计专题
建站主机与虚拟主机有何区别?如何选择最优方案?
网站好制作吗知乎,网站开发好学吗?有什么技巧?
如何高效配置香港服务器实现快速建站?
如何快速配置高效服务器建站软件?
微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
建站之星2.7模板快速切换与批量管理功能操作指南
定制建站流程解析:需求评估与SEO优化功能开发指南
Swift中循环语句中的转移语句 break 和 continue
简单实现Android文件上传
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
家庭服务器如何搭建个人网站?
建站之星在线客服如何快速接入解答?
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
建站之星ASP如何实现CMS高效搭建与安全管理?
*请认真填写需求信息,我们会在24小时内与您取得联系。