ОШИБКА при автоповороте интерфейсов с горизонтальной прокруткой UITableView - PullRequest
2 голосов
/ 12 сентября 2011

На одном из экранов моего приложения я реализовал горизонтальную прокрутку таблицы. Выбранный метод заключался в применении поворота на 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];  
}

Проблема в ширине ячейки таблицы. Например:

  1. Запускаю приложение с устройством в альбомном режиме. Таблица выглядит красиво.

  2. Я поворачиваю устройство в портретном режиме, и мои ячейки внезапно имеют меньшую ширину, чем таблица (помните, что представление таблицы поворачивается, поэтому ширина ячейки фактически измеряется по вертикали).

  3. Затем я поворачиваю устройство обратно в альбомном режиме, и мои клетки выливаются из рамки стола.

Эта проблема возникает, только если к табличному виду применено преобразование вращения. Если я удаляю его, клетки обновляются идеально. Кроме того, я проверил, и вращение отдельных ячеек не влияет на эту проблему - проблема заключается только в преобразовании табличного представления.

Итак, кто-нибудь сталкивался с этой проблемой раньше ... или есть какие-либо знания о том, как я могу контролировать ширину ячейки. На данный момент меня даже не интересует плавная анимация. Мне просто нужно что-то, что работает.

Спасибо,

EDIT:

При дальнейшем исследовании сегодня я обнаружил, что после поворота ячейки изменят размеры, чтобы они использовали высоту стола как ширину, так и высоту ячейки.

Это означает, что после поворота у меня всегда будут квадратные ячейки, равные высоте стола (я проверял это вручную, устанавливая высоту стола, и это проверяется).

Большая проблема в том, что даже если я вручную изменю размер своих ячеек после поворота, у вновь созданных ячеек все равно будет проблема. Каким-то образом таблица облажается значением, которое он использует для ширины ячейки. (

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...