iOS开发笔记-UITableViewCell分割线

来源:互联网 发布:淘宝能查到快递重量吗 编辑:程序博客网 时间:2024/06/03 00:57

在xcode5 面板的inspector(检查器)中找到UITableView的Separator Insetss标签,默认是 Default。

我们可以选择Custom,然后将Left  15改成 0, 你就会发现tableview 的分割线跟以前一样了。

在 tableview delegate  我们会发现 ios7 增加了一些新属性,

@property (nonatomic)         UIEdgeInsets                separatorInset       NS_AVAILABLE_IOS(7_0)UI_APPEARANCE_SELECTOR;// allows customization of the frame of cell separators

苹果公司已经给了注释,可以自定义视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];

}

}


0 0
原创粉丝点击