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

为什么我说是少了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];

}

}

时间: 2024-12-23 08:04:23

解决tableView的分割线少了15像素的问题的相关文章

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

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

tableView 短剪线离开15像素问题

ios7于,UITableViewCell左将默认15空白像素. 建立setSeparatorInset:UIEdgeInsetsZero 空白可以去除. ios8中.setSeparatorInset:UIEdgeInsetsZero 的设置已经不起作用了. 以下是解决的方法,首先在viewDidLoad方法增加以下代码: if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) { [self.tableVi

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

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

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

解决tableView分割线左边不到边的情况

//解决tableView分割线左边不到边的情况//    if ([tableView respondsToSelector:@selector(setSeparatorInset:)]) {//        [tableView setSeparatorInset:UIEdgeInsetsZero];//    } 解决tableView分割线左边不到边的情况

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

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

tableview的分割线ios8.0

去掉ios7.0以上表格分割线15像素的空隙 1.首先在viewDidLoad方法加入以下代码: if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) { [self.tableView setSeparatorInset:UIEdgeInsetsZero]; } if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) { [

IOS8 TableView的分割线

在IOS8 中,无法再通过Storyboard设置让tableView的分割线与左边界对齐了,网上有很多人提供了解决办法,在IOS8及8.1的版本中可以使用,但是在8.3的版本又不行了,8.3的版本中,需要如下设置 在cellForIndexPath里,添加: if ([cell respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]) { [cell setPreservesSuperviewLayoutMargin

IOS8 设置TableView Separatorinset 分割线从边框顶端开始

IOS8 设置TableView Separatorinset 分割线从边框顶端开始 在ios8上 [TableView setSeparatorInset:UIEdgeInsetsMake(0,0,0,0)];不起作用 经过测试加入下面方法 在ios7 8上都可以正常工作 -(void)viewDidLayoutSubviews{    if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) {