Получение размера представления UIViewController после вращения - PullRequest
3 голосов
/ 13 декабря 2010

У меня есть UIViewController с кучей подпредставлений, которые мне нужно выложить в другом порядке, если iPad находится в портретном или альбомном режиме. Я хотел бы иметь возможность получить размер, в который представление UIViewController будет преобразовано после поворота, чтобы я мог рассчитать новый набор кадров для моих подпредставлений. Однако я не нашел способа получить этот новый размер до того, как вращение произойдет, и к тому времени, когда вращение произошло, уже слишком поздно, так как я не могу оживить переход подпредставлений в их новые места.

Кто-нибудь знает способ обойти это?

Ответы [ 2 ]

3 голосов
/ 13 декабря 2010

Вы пробовали willAnimateRotationToInterfaceOrientation:duration:.Как указано в документации:

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

Я считаю, что представление контроллера представления также должно иметь новые измерения в этом методе.

1 голос
/ 13 декабря 2010

Определите ваши landscape и portrait представления в заголовке, присоедините их в Интерфейсном Разработчике и попробуйте этот код:

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
     if(((interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || 
      (interfaceOrientation == UIInterfaceOrientationLandscapeRight))){

        self.view = landscape;

 }else if(((interfaceOrientation == UIInterfaceOrientationPortrait) || 
     (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown))){

        self.view = portrait;

    }
    return YES;
}

Это намного проще, чем вычислять новые кадры для каждого объекта впредставление.

Для анимации можно добавить [UIView beginAnimations:@"animation" context:nil]; & [UIView commitAnimations]; для анимации нового представления.

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