У меня есть пользовательская ячейка представления таблицы, которая использует автоматическую компоновку и имеет индикатор раскрытия в качестве вспомогательного представления. Размер ячейки ячеек на экране совершенно неверен при первом отображении:
Как видите, ячейка занимает примерно 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;
}
Исключение:
По крайней мере, этот метод не дает мне мигать пользовательский интерфейс.
Если я удалю дополнительный вид, он действительно работает отлично.
ОБНОВЛЕНИЕ: я добавил образец проекта в github: https://github.com/fwaddle/TableCellAccessoryTest
ОБНОВЛЕНИЕ № 2: Оказывается, еще один способ обойти эту ошибку — разместить ячейку в коде. Я только что попытался сделать то же самое в коде, и он не выдал предупреждение и работал нормально. Похоже на баг ИБ.
Любые идеи, как обойти эту проблему? Спасибо.
rowHeight
в табличном представлении значениеUITableViewAutomaticDimension
. Также это не исключение, это предупреждение о неправильной настройке. Неперехваченное исключение завершит ваше приложение. - person Michael   schedule 08.05.2015estimatedRowHeight
, у меня была эта проблема, и когда я увеличил это значение, все сработало отлично. - person Michael   schedule 08.05.2015estimatedRowheight
не дало эффекта. Я загрузил пример проекта на github и обновил приведенную выше ссылку. - person Mof   schedule 08.05.2015