2013-10-15 3 views
4

У меня возникла проблема обработки вращения в контроллере представления.Изменение размера представления при повороте

Когда вид сверху и телефон повернут, он правильно адаптируется.

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

Пример:

enter image description here

Я uploaded my test project to GitHub; вы можете клонировать его с https://github.com/tewha/ResizeOnRotate.git.

У меня нет обработки обработки кода вообще. Я понял, что это должно быть полностью автоматическим. Что мне не хватает, чтобы сделать эту работу правильно?

Edit:

Вдохновленный ниже ответ, простой обходной:

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 

    UITableViewCellSeparatorStyle separatorStyle = self.tableView.separatorStyle; 
    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; 
    self.tableView.separatorStyle = separatorStyle; 
} 

ответ

4

Я думаю, что это может быть Apple, ошибка. Вы можете воспроизвести его в своем собственном приложении «Mail».

Шаги по воспроизведению в приложении «Почта» -

  1. Открыть Входящие сообщений в приложении «Почта». (скажем, в портретной ориентации)
  2. Нажмите значок сообщения (внизу справа) и поверните устройство (в альбомной ориентации).
  3. Закройте составленное сообщение и просмотрите сообщение «Входящие».

: Разделительные линии разрушены.

Обходной путь для пользователя: прокрутите вниз и вверх в папке входящих сообщений (приводит к обновлению дисплея).

Воспроизводимость до iOS 7.0.2.

Редактировать

(код обходной путь - 1)

Если возможно, вы могли бы reloadData обновить TableView, когда он появится.

- (void)viewWillAppear:(BOOL)animated 
{ 
    [self.tableView reloadData]; 
} 

код обходной путь - 2 (перезагружать только видимые ячейки)

- (void)viewWillAppear:(BOOL)animated 
{ 
    NSArray *refreshCells = [self.tableView indexPathsForVisibleRows]; 

    [self.tableView reloadRowsAtIndexPaths:refreshCells withRowAnimation:UITableViewRowAnimationNone]; 
} 
+0

Сообщил, как 15235773. –

+0

я нашел менее разрушительную обходной путь; не стесняйтесь добавлять его в свой ответ, если вам это нравится (см. обновленный вопрос). :) –

Смежные вопросы