Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iOS 9 UITableView cell's text label not the full width of the UITableView

Since updating to iOS 9, table view cell's in iPad landscape no longer stretch the full width of the table in my unit tests.

My test is a simple table that takes a snapshot at the end.

- (void)testTableSize{
    UIViewController *viewController = [[UIViewController alloc] init];
    UITableView *tableView = [[UITableView alloc]initWithFrame:CGRectMake(0,0,viewController.view.bounds.size.width, viewController.view.bounds.size.height) style:UITableViewStylePlain];

    tableView.dataSource = self;
    tableView.delegate = self;

    [tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Cell"];
    [viewController.view addSubview:tableView];

    ASCSnapshotVerifyViewiPad([viewController view]);
}

The cells are very simple for this example

static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

// Configure the cell...
cell.textLabel.backgroundColor = [UIColor blueColor];   // Demo purpose
cell.textLabel.backgroundColor = [UIColor yellowColor]; // Demo purpose
cell.textLabel.text = [NSString stringWithFormat:@"Cell %d", (int)indexPath.row];
return cell;

but my cell is drawn with a big margin on the left and right. Any idea why?

enter image description here

like image 843
Alan Avatar asked Sep 29 '15 13:09

Alan


1 Answers

When I tested my App with iOS9, I noticed huge margins, on some UITableViews, both left and right. After a bit of investigation, I found the following new method:

// iOS9
if([self.tableView respondsToSelector:@selector(setCellLayoutMarginsFollowReadableWidth:)]) {
    self.tableView.cellLayoutMarginsFollowReadableWidth = NO;
}

When the above code is called, after instantiating your UITableView, it should remove them.

Paste this code after you set your tableView delegate.

Hope it helps.

like image 189
Carl Hine Avatar answered Oct 19 '22 11:10

Carl Hine