Проблема альбомной ориентации - PullRequest
2 голосов
/ 31 марта 2012

У меня есть приложение завершено на 98%, но я наткнулся на проблему, которая ставит меня в тупик! Любая помощь будет великолепна.

В основном .... У меня есть 5 вкладок контроллера. Я сделал некоторую переделку в первом виде вкладок, чтобы переместить его из портретного в ландшафтный режим, чтобы все выглядело великолепно. Другие 4 вкладки также легко перемещаются из портретной в альбомную и обратно.

Теперь .... проблема, с которой я столкнулся, заключалась в том, что, если бы я сказал вкладку 5 в портретной ориентации, переместил ее в альбомную ориентацию и затем коснулся вкладки 1, единственными битами в вкладке 1, которые ориентированы в альбомной ориентации, являются биты, в которых я зафиксировал инспектор размеров Биты, которые я переместил в коде, не изменятся.

Однако если я поверну эту вкладку 1 в портретную, а затем вернусь в альбомную ориентацию, это сработает!

Поля меток, которые я переместил с кодом с использованием .frame и CGRectMake, находятся в

-(void)willAnimateRotationToInterfaceOrientation: (UIInterfaceOrientation)interfaceOrientation duration: (NSTimeInterval)duration

способ.

....... мне нужно поместить некоторый код в AppDelegate, в котором находится TabController ??

Для меня имеет смысл, что TabBarController знает ориентацию.

Когда вы нажимаете на вкладку ..... какой метод запускается первым до загрузки представления ??

Я думаю, что мне нужно поймать ориентацию, отрегулировать положение меток и затем загрузить вид .......

Буду признателен за любые мысли?

Gaz.

РЕДАКТИРОВАТЬ: Это то, что я хочу сделать, это иметь возможность изменить вещи на вкладке 1, если ориентация меняется на других вкладках. Вы можете это сделать? Кажется, что 5 видов вкладок являются отдельными ...

Ответы [ 2 ]

0 голосов
/ 01 апреля 2012

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

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
                            duration:(NSTimeInterval)duration {
    if(UIInterfaceOrientationIsLandscape(toInterfaceOrientation)){
         //change positions with animation using duration
    }else if(UIInterfaceOrientationIsPortrait(toInterfaceOrientation)){
         //change positions with animation using duration
    }
} 

Надеюсь, это поможет.

0 голосов
/ 01 апреля 2012

Попробуйте вызвать метод ротации в контроллерах вида. * Метод 1001 *, проверка правильности ориентации и перемещение того, что нужно переместить. Должно выглядеть примерно так

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

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