iPad UISplitViewController не меняет своего размера при запуске? - PullRequest
1 голос
/ 15 июня 2011

Я разрабатываю приложение для iPad (iOS 4), включающее UISplitViewController.Главная особенность моего большого (правого) контроллера вида в контроллере разделения - UITableView.Я установил в моем табличном представлении автоматическое изменение ширины и высоты:

_tableView.autoresizingMask = UIViewAutoresizingFlexibleHeight
| UIViewAutoresizingFlexibleWidth;

Это означает, что, когда я поворачиваюсь и контроллер раздельного просмотра входит в игру, VC и табличное представление изменяют размеры соответственно и индикатор прокруткиостается видимымНо когда я запускаю приложение в альбомной ориентации, размеры не изменяются, поэтому полосы прокрутки не видны.

Вот код журнала в моих методах UISplitViewControllerDelegate и его результаты.Если вы хотите получить сводку, перейдите к нижней части.

- (void)splitViewController:(UISplitViewController*)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController:(UIPopoverController*)pc
{

    NSLog(@"Table frame: %@", NSStringFromCGRect(_tableView.frame));
    NSLog(@"Self frame: %@", NSStringFromCGRect(self.view.frame));
}

- (void)splitViewController:(UISplitViewController*)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)button
{
    NSLog(@"Table frame: %@", NSStringFromCGRect(_tableView.frame));
    NSLog(@"Self frame: %@", NSStringFromCGRect(self.view.frame));
}

Запуск приложения в альбомной ориентации приводит к этому ( Приложение A ):

Рамка таблицы: {{0, 223}, {768, 781}}

Самофрейм: {{0, 20}, {768, 1004}}

Затем, когда я поворачиваюсь (вне ландшафта) Я получаю это ( Приложение B ):

Каркас таблицы: {{0, 223}, {768, 781}}

Selfframe: {{321, 0}, {703, 748}}

Начиная с портретной ориентации и затем поворачивая в альбомную ориентацию, я получаю следующее ( Приложение C ):

Каркас таблицы: {{0, 223}, {768, 781}}

Самофрейм: {{0, 0}, {768, 1004}}

Затем поверните обратно в портрет ( Приложение D ):

Каркас таблицы: {{0, 223}, {703, 525}}

Selfframe: {{321, 0}, {703, 748}}

Мне кажется, что:

  • A и C должны быть одинаковыми, поскольку они 'оба по существу вращаются вне портрета.И они одинаковы, так что все хорошо.
  • B и D должны быть одинаковыми, так как они, по сути, вращаются вне ландшафта.Но это не так.Похоже, что автоматическое изменение размера здесь не работает.

Кажется, что ширина таблицы должна быть 703 в альбомной и 768 в портретной.Я попытался поместить код изменения размера, чтобы установить это в viewDidLoad, viewWillAppear, viewDidAppear, оба эти метода и т. Д., И, похоже, ничего не работает.Каков здесь нормальный подход?

ОБНОВЛЕНИЕ 15/06/2011: я решил эту проблему, полностью отключив автоматическое изменение размера и просто установив кадры самостоятельно в двух вышеупомянутых функциях, но мне все еще интересно, есть лиОбычная практика для решения этой проблемы.

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