解决iOS8下TableView cell的下面的线左边不能顶到头
iOS7之后,在使用UITableView的时候,UITableViewCell左侧会有默认15像素的空白。即separatorLine 不能顶到最左边.如下图所示:
这里记录一下解决方案。
setSeparatorInset
@property (nonatomic) UIEdgeInsets separatorInset NS_AVAILABLE_IOS(7_0) UI_APPEARANCE_SELECTOR; // allows customization of the frame of cell separators 可以自定义cell separator的frame
这样在iOS7中可以通过 self.tableview setSeparatorInset:UIEdgeInsetsZero
来解决这个问题。
但是iOS8之后,这个解决方法不起作用了,下面是另外的解决方法:
- (void)viewDidLayoutSubviews
{
if ([_tableView respondsToSelector:@selector(setSeparatorInset:)]) {
[_tableView setSeparatorInset:UIEdgeInsetsZero];
}
}
- (void)tableView:(UITableView *)tableView willDisplayCell:(nonnull UITableViewCell *)cell forRowAtIndexPath:(nonnull NSIndexPath *)indexPath
{
if ([tableView respondsToSelector:@selector(setSeparatorInset:)]) {
[tableView setSeparatorInset:UIEdgeInsetsZero];
}
if ([tableView respondsToSelector:@selector(setLayoutMargins:)]) {
[tableView setLayoutMargins:UIEdgeInsetsZero];
}
if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
[cell setLayoutMargins:UIEdgeInsetsZero];
}
}