iOS 5 Multi Storyboard Rotation - PullRequest
       19

iOS 5 Multi Storyboard Rotation

0 голосов
/ 17 февраля 2012

У меня есть приложение для iPad, которое имеет 2 представления, каждое со своим собственным View Controller.Apple заявляет, что предлагает приложениям iPad вращаться во всех направлениях.Я использовал эту технику, чтобы расположить элементы в раскадровке на изменениях вращения:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    //[super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];

    if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight || toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft)
    {
        studentNumberButton.frame = CGRectMake(30, 1, 158, 155);
        studentNumberLabel.frame = CGRectMake(173, 57, 347, 43);
        studentLabel.frame = CGRectMake(528, 56, 67, 43);

        // Other code goes below...

Я сделал это для каждого вида, и он отлично работает для всех вращений.Однако проблема возникает, когда я говорю, что iPad находится на View Controller 1 в альбомной ориентации и нажмите кнопку, чтобы отобразить View Controller 2, View Controller 2 работает нормально, но в портретном режиме.То же самое происходит, если я нахожусь в ландшафтном режиме для View Controller 2 и перехожу на View Controller 1. Если я нахожусь в портретном режиме, все хорошо для обоих видов.

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

Спасибо!

1 Ответ

0 голосов
/ 17 февраля 2012

Вам необходимо добавить метод viewWillAppear следующим образом:

- (void)viewWillAppear:(BOOL)animated {
if (([self interfaceOrientation] == UIDeviceOrientationLandscapeLeft)|| ([self interfaceOrientation] == UIDeviceOrientationLandscapeRight)) {

    studentNumberButton.frame = CGRectMake(30, 1, 158, 155);
    studentNumberLabel.frame = CGRectMake(173, 57, 347, 43);
    studentLabel.frame = CGRectMake(528, 56, 67, 43);
    ...

} else {
    ...
}

}

...