Нежелательное изменение размера при вращении, вызванное UITabBarController - PullRequest
0 голосов
/ 29 августа 2010

У меня есть tabBarController с 4 представлениями. Я хотел, чтобы вращался второй вид, поэтому я добавил

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
     return YES; 
    }

ко всем моим 4 viewControllers. Теперь каждый вид может вращаться, и это хорошо.

Второй вид отлично работает при вращении, он отлично справляется с изменением размера и перерисовкой его содержимого (пока другие представления вращаются, но не обновляют их содержимое, я буду работать над этим)

Проблема в том, что, если я остаюсь в первом представлении, поворачиваю телефон, а затем перехожу во второе представление, все содержимое изменяется странным образом.

Например, у меня есть scrollView на втором экране, охватывающем весь экран. Когда я поворачиваю телефон, оставаясь на втором экране, он изменяет размер прокрутки, чтобы соответствовать экрану ландшафта, все в порядке. Но если я поверну телефон, оставаясь в первом виде (или в третьем, или в четвертом), вид прокрутки станет маленьким, меньше половины экрана.

Для изменения размера и перерисовки содержимого я использую:

    - (void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    [self adjustViewsForOrientation:toInterfaceOrientation]; }

    - (void) adjustViewsForOrientation:(UIInterfaceOrientation)orientation {
    if (orientation == UIInterfaceOrientationLandscapeLeft ||
  orientation == UIInterfaceOrientationLandscapeRight) {

  sfondo.frame = CGRectMake(0, 0, 480, 260);
  scrollView.frame = CGRectMake(0, 0, 480, 250); 
  scrollView.contentSize = CGSizeMake(480,1000);
  for (int i=0; i<3; i++) {
   [[grafici objectAtIndex:i] landscapeMode:TRUE];
  }
 }
    else if (orientation == UIInterfaceOrientationPortrait ||
    orientation == UIInterfaceOrientationPortraitUpsideDown) {

  sfondo.frame = CGRectMake(0, 0, 320, 411);
  scrollView.frame = CGRectMake(0, 0, 320, 411); 
  scrollView.contentSize = CGSizeMake(320,1100);
  for (int i=0; i<3; i++) {
   [[grafici objectAtIndex:i] landscapeMode:FALSE];
  }    
 }
}

1 Ответ

0 голосов
/ 29 августа 2010

Я обнаружил, что проблемы возникают из-за того, что я установил свой scrollview и другие вещи из Interface Builder.

Это программно решило мою проблему!

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