White space before separator line into my TableView
I have a question about UITableView... I have a UITableViewController and I created a custom cell. When I visualize the tableView I see a little white space before the separator line as you can see into this screenshot:
Why? It is a default visualize? Can I change something to remove this white left padding?
The leading whitespace is provided by default in iOS 7, even for custom cells.
Checkout this property separatorInset
of UITableviewCell to remove/add white spacing at either ends of cell's line separator.
// Remove white space
cell.separatorInset = UIEdgeInsetsZero;
Alternatively, at UITableView level, you can use this property -
if ([tableView respondsToSelector:@selector(setSeparatorInset:)]) { // Safety check for below iOS 7
[tableView setSeparatorInset:UIEdgeInsetsZero];
}
Update - Below code works on iOS 7 and iOS 8:
-(void)viewDidLayoutSubviews
{
if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) {
[self.tableView setSeparatorInset:UIEdgeInsetsZero];
}
if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) {
[self.tableView setLayoutMargins:UIEdgeInsetsZero];
}
}
-(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];
}
}
Alternatively, you can also edit this in interface builder (IB):
- Go to IB.
- Select Table View.
- Open "Attribute Inspector" on the right.
- Change "Separator Insets" from Default to Custom.
- Change the "Left" attribute from 15 to 0.
This has the same effect as @Ashok's answer, but doesn't require writing any code.
Update Works on iOS 7 and 8
Update Works on iOS 9