Subview не имеет автоматического размера при добавлении в контроллер корневого представления - PullRequest
1 голос
/ 07 апреля 2010

У меня есть контроллер корневого представления, который будет иметь до 10 или около того подпредставлений. Я использую автоповорот / авторазмер для всего приложения.

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

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

  • Другими словами, как только подпредставление добавляется к корневому контроллеру в портретном режиме, оно корректно поворачивается и масштабируется (и остается таким). Если подпредставление добавляется, когда корневой контроллер находится в альбомной ориентации, оно вращается, но не выполняет автоматического изменения размера (и размеры представления остаются испорченными, возвращаясь к портретному)

  • Я попытался принудительно настроить автоматический размер, вызвав SetNeedsLayout, SetNeedsDisplay и LayoutIfNeeded, но ничего не работает. Я знаю, что мог бы сделать это вручную, определив ориентацию корневых контроллеров и соответствующим образом изменив размеры подпредставлений, но это большая работа для чего-то, что должно работать автоматически.

  • Я что-то упустил? Любая помощь будет оценена. Мой проект - это порт iPad из приложения для iPhone, приложение для iPhone не вращается, поэтому я не уверен, что это может быть что-то не так с бета-версией 3.2.

1 Ответ

2 голосов
/ 10 апреля 2010

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

-

(void) AdjustFrame{
 UIDeviceOrientation interfaceOrientation = [[UIDevice currentDevice] orientation];
 if((interfaceOrientation == UIInterfaceOrientationLandscapeLeft)||(interfaceOrientation == UIInterfaceOrientationLandscapeRight))
 {
  CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame];
  CGRect newFrame =  CGRectMake(0.0, 0.0, applicationFrame.size.height, applicationFrame.size.width);
  [self.view setFrame:newFrame];
  [self.view setNeedsDisplay];


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