文档章节

删除TableView中单个cell的分割线

丨王天雨丨
 丨王天雨丨
发布于 2016/09/26 22:51
字数 523
阅读 13
收藏 0

前言

在iOS开发中,我们最常使用的UIKit控件之一就是UITableView,默认情况下我们可以通过UITableView的separatorStyle属性来更改所有cell的分割线样式,但是有时我们会遇到需要更改单独一个cell的分割线的需求,比如删除最下面一行cell的分割线,这是separatorStyle属性就不能满足要求了。为了达到目的我们可以采用的方法之一是将separatorStyle设置成为UITableViewCellSeparatorStyleNone,去掉默认的分割线,然后自定义cell,手动在需要的行添加分割线,这么做灵活性很高,适用于各种UITableView的使用场景。

上面提到的方法在某些简单的场景中显得过于复杂,比如用于不可滚动的TableView中。本文将介绍另一种实现此需求的简单方法。

实现思路

本方法是通过调整UITableViewCell的separatorInset属性来实现删除单个cell的分割线。

在iOS7之前可以通过增大分割线左侧的inset使整个分割线移出屏幕,但是到了iOS8及以后的版本中,系统不再允许将分割线移出屏幕,因此我们必须另想其他方法。因为UITableViewCell的separatorInset可以同时设置分割线左端和右端的inset,因此当我们将两端的inset分别设置为整个cell宽度的一半时,就会将中间的分割线的宽度压缩至0,此时相当于将该cell的分割线删除。

实现方法

因为此方法是根据当前cell宽度来计算并压缩分割线的,所以要考虑到当cell宽度改变时,比如orientation改变,需要重新计算inset的宽度,所以我们将在viewWillLayoutSubviews中进行处理,实现如下:

- (void)viewWillLayoutSubviews {
    [super viewWillLayoutSubviews];
    
    //除去最后一个TableViewCell下方的分割线
    UITableViewCell *cell = [self.tableView.visibleCells lastObject];
    cell.separatorInset = UIEdgeInsetsMake(0, CGRectGetWidth(cell.bounds)/2.0, 0, CGRectGetWidth(cell.bounds)/2.0);
}

本文个人博客地址: http://wty.im/2016/03/21/delete-tableview-separator-for-a-single-cell/ Github: https://github.com/wty21cn/

© 著作权归作者所有

丨王天雨丨
粉丝 0
博文 5
码字总数 5157
作品 0
朝阳
程序员
私信 提问
tableView使用的各项注意点

1.取消tableView上的分割线。 self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; 2.设置cell的选中样式。 self.selectionStyle = .None 3. 设置cell滑动 出现 删除的按钮......

如若初见
2016/04/25
57
0
iOS中表视图(UITableView)使用详解

iOS中UITableView使用总结 一、初始化方法 - (instancetype)initWithFrame:(CGRect)frame style:(UITableViewStyle)style; 这个方法初始化表视图的frame大小并且设置一个风格,UITableViewSt...

珲少
2015/04/21
3K
1
UITableViewCell 分割线

表格分割线大家懂的,默认并不是从最左侧开始的 在ipad中,发现,分割线距离最左和最右侧,都有距离 在iphone中,只有左侧有空隙 去掉分割线:设置UITableView的separatorStyle = UITableVie...

asjoker
2016/01/19
78
0
IOS中表视图(UITableView)使用详解

IOS中UITableView使用总结 一、初始化方法 - (instancetype)initWithFrame:(CGRect)frame style:(UITableViewStyle)style; 这个方法初始化表视图的frame大小并且设置一个风格,UITableViewSt...

04zhujunjie
2015/11/04
444
0
UITableVIewCell分割线样式

在使用系统自带的UITableVIewCell的时候你有没有遇到过这样的困惑呢 ? 1.如何修改cell分割线的颜色 ? 2.如何能让cell的分割线左对齐? 3.如何单独让某个cell的分割线消失? 4.既设置了 cell.i...

zh_iOS
2016/08/29
128
0

没有更多内容

加载失败,请刷新页面

加载更多

基于CentOS7搭建GitLab

基于CentOS7搭建GitLab 12018.11.02 16:38:51字数 959阅读 3791 本文作者:蓝雄威,叩丁狼高级讲师。原创文章,转载请注明出处。 一、简介 Git Lab GitLab是利用 Ruby on Rails 一个开源的版...

linjin200
2分钟前
2
0
random生成随机数

随机生成0到100之间的10个随机数,然后使用冒泡排序将这10个数按从小到大的顺序排序 生成10个随机数 import randomnum = range(0, 100) # 范围在0到100之间,需要用到range()函数。nums...

彩色泡泡糖
6分钟前
1
0
kubernetes 环境搭建 —— kubeadm

主从节点需要安装的服务 Master 节点 Node 节点 etcd-master Control plane(如:calico,fannel) kube-apiserver kube-proxy kube-controller-manager other apps kube-dns Control plane(如:......

lemos
9分钟前
1
0
php将字符串中的中英文数字分割

$str = "php如何将字 符串中322的字母数字Asf f45d和中文_分割?"; $arr = preg_split("/([a-zA-Z0-9]+)/", $str, 0, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); print_r($arr); Arr......

小小小壮
9分钟前
1
0
茑屋书店理解(一)

说到实体书店,你可能会想到两个字“难做”。一是电子书大为盛行,二是纸书作为标准品,完全可以在网上购买,因此国内许多实体书店的日子是举步维艰。但是在日本有这么一家实体书店,目前已经...

Idea
13分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部