iOS UITableView的分割线短15像素,移动到最左边的方法(iOS8)

有好几个朋友问我ios 分割线端了一些 如何解决,于是我就写一篇博客吧。
为什么我说是少了15像素呢?
首先我们拖拽一个默认的tableview 控件! 看下xcode5 面板的inspector(检查器)
我们可以找到一个 Separator Insetss 标签 默认是 Default
我们选择一下 发现有个Custom 这时候我们惊奇的发现Left 15 ,这时候我们只要把这个 15 改成 0 , 然后保存, 你就会发现tableview 的分割线跟以前一样了。

有些朋友问了如果是代码写的tableview 的呢。
下面我们接着分析这个问题,让我们查询下 tableview delegate 我们会发现 ios7 增加了一些新属性,
@property (nonatomic) UIEdgeInsets separatorInset NS_AVAILABLE_IOS(7_0)UI_APPEARANCE_SELECTOR;// allows customization of the frame of cell separators

这个时候你应改发现separatorInset 这个单词是否有点眼熟, 苹果公司已经给了注释,可以自定义视cell 的分割线,
UIEdgeInsets 是个结构体类型,这时候我们发现了我们要的属性 left
typedef struct UIEdgeInsets {
CGFloat top, left, bottom, right; // specify amount to inset (positive) for each of the edges. values can be negative to ‘outset‘
} UIEdgeInsets;

转载
现在我们可以用代码调用下面这个方法,
[myTableView setSeparatorInset:UIEdgeInsetsMake(0,0,0,0)];
这时候你会发现你的tableview 的分割线是不是跟以前一样了呢!

在ios7中,UITableViewCell左侧会有默认15像素的空白。这时候,设置setSeparatorInset:UIEdgeInsetsZero 能将空白去掉。
但是在ios8中,设置setSeparatorInset:UIEdgeInsetsZero 已经不起作用了。下面是解决办法
首先在viewDidLoad方法加入以下代码:
if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) {
[self.tableView setSeparatorInset:UIEdgeInsetsZero];
}
if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) {
[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];
}
}

亲测:iOS8和iOS9中都是有效的,有图有真相,上图。

时间: 2024-11-10 09:53:28

iOS UITableView的分割线短15像素,移动到最左边的方法(iOS8)的相关文章

IOS tableview 消除 分割线短 15 像素 ios8方法 swift版

系统默认样式:   ios8 去除默认分割线边距的代码: //去除表格左侧分割线代码开始 func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) { //ios8 if cell.respondsToSelector("setSeparatorInset:"){ cell.separatorInset =

tableView 隐藏多余分割线,tableView分割线增加15像素

1 //隐藏分割线 2 [self setExtraCellLineHidden:_tableView]; 3 //隐藏多余分割线 4 -(void)setExtraCellLineHidden: (UITableView *)tableView 5 { 6 UIView *view = [UIView new]; 7 view.backgroundColor = [UIColor clearColor]; 8 [tableView setTableFooterView:view]; 9 } 1

tableViewCell的分割线短一截的问题

最近在写很简单的tableView的布局时,发现系统自带的Cell分割线短了15像素,不过这个可以更改,纯代码方式如下: //设置分割线到头,不再断15像素 if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) { [self.tableView setLayoutMargins:UIEdgeInsetsZero]; } 在ios7系统运行上面的就可以搞定,不过ios8 必须加上下面的方法和内容,否则依然短15

iOS学习笔记 15:separatorInset设置UITableView的分割线无效的问题

一.问题描述 UITableView分割线要显示到最左端 查看UITableView的属性,发现设置separatorInset的值可以自定义分割线的位置. @property (nonatomic) UIEdgeInsets separatorInset NS_AVAILABLE_IOS(7_0) UI_APPEARANCE_SELECTOR; // allows customization of the frame of cell separators 打印separatorInset,其默

解决tableView的分割线少了15像素的问题

为什么我说是少了15像素呢? 首先我们拖拽一个默认的tableview 控件! 看下xcode5 面板的inspector(检查器) 我们可以找到一个 Separator Insetss 标签 默认是 Default 我们选择一下 发现有个Custom  这时候我们惊奇的发现Left  15  ,这时候我们只要把这个 15  改成 0 , 然后保存, 你就会发现tableview 的分割线跟以前一样了. 有些朋友问了如果是代码写的tableview 的呢. 下面我们接着分析这个问题,让我们查询下

IOS UItableView得group风格如何去掉分割线问题

在自定义UItableView的时候,当选择的style为Group时,往往在设置透明后分割线还在,为了去除,只要重新设置一个BackgroundView覆盖掉原来的即可 //取消分割线 UIView *view= [ [ [ UIView  alloc ] init ] autorelease]; [cell setBackgroundView :view]; //取消点击效果 cell.selectionStyle = UITableViewCellSelectionStyleNone; I

ios8 解决tableview分割线缺少的15像素

在ios7中,UITableViewCell左侧会有默认15像素的空白.这时候,设置setSeparatorInset:UIEdgeInsetsZero 能将空白去掉. 但是在ios8中,设置setSeparatorInset:UIEdgeInsetsZero 已经不起作用了.下面是解决办法 首先在viewDidLoad方法加入以下代码: if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) { [self.

iOS UITableView 去除多余分割线

在UITableView初始化时加上以下代码即可: self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero]; 效果演示: iOS UITableView 去除多余分割线

UITableViewCell左侧会有默认15像素的空白

ios7中,UITableViewCell左侧会有默认15像素的空白.设置setSeparatorInset:UIEdgeInsetsZero 能将空白去掉. ios8中,setSeparatorInset:UIEdgeInsetsZero 的设置已经不起作用了. 下面是解决办法,首先在viewDidLoad方法加入以下代码: if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) { [self.tableV