我有一个使用自动布局的自定义表格视图单元格,并有一个披露指示器作为附件视图。首次显示时屏幕上单元格的单元格大小完全错误:
如您所见,该单元占用了大约 1.5 个屏幕的空间:
但是,如果我旋转设备并向后旋转,它看起来很好:
正如你在这里看到的,我没有做任何复杂的事情:
我有一个非常不理想的解决方法:
-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[self.tableView reloadData];
}
但这显然会在您第一次看到屏幕时导致“闪光”。在更复杂的情况下,闪光更为明显。
我有另一种解决方法,但这会导致自动布局异常:
- (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;
}
例外:
至少这种方法不会让我 UI 闪烁。
如果我删除附件视图,它实际上工作得很好。
更新:我已经向 github 添加了一个示例项目: https ://github.com/fwaddle/TableCellAccessoryTest
更新#2:原来围绕这个错误的另一项工作是在代码中布局单元格。我只是尝试在代码中做同样的事情,它没有抛出警告并且工作正常。看起来像一个 IB 错误。
任何想法如何解决这个问题?谢谢。