На одном из экранов моего приложения я реализовал горизонтальную прокрутку таблицы.
Выбранный метод заключался в применении поворота на 90 градусов к табличному виду, а затем поворот каждой ячейки на -90 градусов.
Все работает хорошо, за исключением проблемы с авторотацией. Я провел большую половину этого дня в этом, но пока безуспешно.
Кадр просмотра таблицы изменяется в соответствии с масками autoresizing таблицы и в порядке. Проблема в ячейках табличного представления, которые не могут автоматически изменять размер.
Мне удалось красиво изменить размер ячеек (с плавной анимацией), используя этот небольшой фрагмент кода контроллера представления.
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
[volumesPicker beginUpdates];
[volumesPicker endUpdates];
NSIndexPath* indexPath = [NSIndexPath indexPathForRow:currentFocusedIndex inSection:0];
[volumesPicker scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
[super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
}
Проблема в ширине ячейки таблицы. Например:
Запускаю приложение с устройством в альбомном режиме. Таблица выглядит красиво.
Я поворачиваю устройство в портретном режиме, и мои ячейки внезапно имеют меньшую ширину, чем таблица (помните, что представление таблицы поворачивается, поэтому ширина ячейки фактически измеряется по вертикали).
Затем я поворачиваю устройство обратно в альбомном режиме, и мои клетки выливаются из рамки стола.
Эта проблема возникает, только если к табличному виду применено преобразование вращения. Если я удаляю его, клетки обновляются идеально. Кроме того, я проверил, и вращение отдельных ячеек не влияет на эту проблему - проблема заключается только в преобразовании табличного представления.
Итак, кто-нибудь сталкивался с этой проблемой раньше ... или есть какие-либо знания о том, как я могу контролировать ширину ячейки. На данный момент меня даже не интересует плавная анимация. Мне просто нужно что-то, что работает.
Спасибо,
EDIT:
При дальнейшем исследовании сегодня я обнаружил, что после поворота ячейки изменят размеры, чтобы они использовали высоту стола как ширину, так и высоту ячейки.
Это означает, что после поворота у меня всегда будут квадратные ячейки, равные высоте стола (я проверял это вручную, устанавливая высоту стола, и это проверяется).
Большая проблема в том, что даже если я вручную изменю размер своих ячеек после поворота, у вновь созданных ячеек все равно будет проблема. Каким-то образом таблица облажается значением, которое он использует для ширины ячейки. (