I have a custom table view cell that uses automatic layout and has a disclosure indicator as an additional view. The cell size of the cells on the screen is completely erroneous when first displayed:
As you can see, the cell occupies about 1.5 screens of space:

However, if I rotate the device and rotate it backwards, it looks fine:

As you can see here, I did not do anything complicated:

I have a very small solution to make:
-(void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [self.tableView reloadData]; }
But this clearly causes a βflashβ when you first see the screen. In a more complex scenario, the flash is much more obvious.
I have another workaround, but this throws an auto-layout exception:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { BasicCell *cell = [tableView dequeueReusableCellWithIdentifier:@"BasicCell" forIndexPath:indexPath]; cell.basicLabel.text = @"Hello this is just some text that should get the label to go over multiple lines"; [cell.basicLabel layoutIfNeeded]; return cell; }
An exception:

At least this method does not let me blink the UI.
If I remove the look of the accessory, it really works great.
UPDATE: I added a sample project to github: https://github.com/fwaddle/TableCellAccessoryTest
UPDATE # 2: It turns out another work around this error is to layout the cell in code. I just tried to do the same in the code, and it did not throw a warning and worked fine. Looks like an IB error.
Any ideas how to get around this? Thanks.