Отображение ячеек таблицы при выборе на iOS 8
Я пытаюсь обновить свои приложения для iOS 8, и одна странная проблема, которую я не могу понять, заключается в том, что всякий раз, когда я нажимаю на ячейку таблицы (в виде сгруппированной таблицы) и нажимаю другой контроллер просмотра на навигацию контроллер, все ячейки таблицы вид прыгать. Это похоже на то, что все они немного уменьшают их высоту.
Следовательно, при появлении навигационного стека и возвращении к исходному экрану просмотра таблицы клетки снова прыгают, на этот раз они увеличивают свою высоту и возвращаются к тому, как они были изначально.
Я попытался использовать UITableViewController, выполнив свое собственное управление представлением таблиц, не используя высоту раздела экспликации, удалив все пользовательские виды заголовков и фреймы, в основном все, что я мог придумать.
Это происходит на всех эмуляторах iOS 8 и на реальных запусках устройств iOS 8 и iPhone, и iPads.
Любые предложения действительно помогут.
Изменить: удалено видео
Ответы
Ответ 1
Хорошо, поэтому, если вы используете по умолчанию UITableViewCell
и устанавливаете настраиваемые шрифты для textLabel
и detailTextLabel
, убедитесь, что вы либо установили rowHeight
для представления таблицы, либо использовали один из UITableViewDelegate
методы, например tableView:estimatedHeightForRowAtIndexPath:
Тот же код отлично работает в более ранних версиях iOS, но по какой-то причине требует исправления на iOS 8.
Ответ 2
У меня была такая же проблема!
Похоже, что iOS 8 SDK использует оцененный RowHeight после выбора строки, которая затем приводит к неправильной высоте для всего tableview, что вызывает скачок самого представления таблицы.
Не задание свойства measuredRowHeight или реализация метода делегата будет исправлять ошибку.
Я еще не нашел чистого решения для его исправления.
Ответ 3
Вы можете добиться самоограничения с помощью этого кода:
implement together:
tableView.rowHeight = UITableViewAutomaticDimension;
tableView.estimatedRowHeight = CGFloatValue (initial estimated height);
в вашей раскадровке, добавьте правильное ограничение на ваши ячейки.
Примечание: проблема с переходом по-прежнему будет отображаться иногда.
точное решение для этой проблемы перехода реализует метод делегата:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return CGFloat;
}