当前位置: 首页 > 编程笔记 >

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

姚昊焱
2023-03-14
本文向大家介绍iOS开发之TableView实现完整的分割线详解,包括了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 tableView 设置 tableview 的分割线 实现效果图:   [tableview   setSeparatorColor:[UIColor    blueColor]];  //设置分割线为蓝色 隐藏UITableV

  • 本文向大家介绍实例详解IOS开发之UIWebView,包括了实例详解IOS开发之UIWebView的使用技巧和注意事项,需要的朋友参考一下 iOS开发之UIWebView 是本文要介绍的内容,UIWebView是iOS sdk中一个最常用的控件。是内置的浏览器控件,我们可以用它来浏览网页、打开文档等等。这篇文章我将使用这个控件,做一个简易的浏览器。如下图: 我们创建一个Window-based A

  • 本文向大家介绍iOS中tableView cell分割线的一些设置技巧,包括了iOS中tableView cell分割线的一些设置技巧的使用技巧和注意事项,需要的朋友参考一下 前言 对于iOS的tableView的cell的分割线,一般我们很少使用不是系统默认的,但是有些项目要求还是要求我们去改变分割线的颜色或者外形以配合整个项目的色调。这个苹果公司早都为我们想到了。 一、关于分割线的位置。 分割

  • 本文向大家介绍IOS 开发之应用唤起实现原理详解,包括了IOS 开发之应用唤起实现原理详解的使用技巧和注意事项,需要的朋友参考一下 一、什么是iOS应用唤起 IOS中的应用唤起用来实现以下功能:在浏览器中可以通过某些方式打开IOS手机本地的app,如果该app没有安装可以跳转到该应用对应的App Store的下载页。  二、App store下载页连接 App store中某个应用的下载页连接形如

  • 本文向大家介绍IOS开发之JSON转PLIST实例详解,包括了IOS开发之JSON转PLIST实例详解的使用技巧和注意事项,需要的朋友参考一下  IOS JSON转PLIST   从xx.json文件中读取JSON数据,写入到xx.plist文件中,实现代码如下:      注:上面的代码片段必须在模拟器上运行     若将上面的代码片段改为如下:       注:在测试前已将city_provi

  • 本文向大家介绍完整的iOS新浪微博分享功能开发,包括了完整的iOS新浪微博分享功能开发的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了iOS新浪微博分享功能的具体代码,供大家参考,具体内容如下 做新浪分享 需先去http://open.weibo.com/apps注册开发者app 很简单! 第1步 第2步 3 设置你的应用的信息 找到自己的appkey 还需要设置自己的kAppRed