Вручную поверните viewcontroller - PullRequest
0 голосов
/ 11 января 2012

Мое приложение не должно авто -вращаться вообще.Но он включает в себя экран, который говорит пользователю, чтобы повернуть свой телефон (а не наоборот!).Чтобы сделать это, ViewController должен сделать анимированное вращение (без какого-либо события вращения), когда отображается экран.

Поэтому я использовал

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft animated:animated];
}

- (void)viewWillDisappear:(BOOL)animated {
    [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait animated:animated];
    [super viewWillDisappear:animated];
}

И

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

чтобы мой экран вращался, как рекомендуют все веб-сайты и документация.

Но вращается только панель состояния: моя панель навигации остается наверху.

Ответы [ 2 ]

0 голосов
/ 12 января 2012

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

  self.navigationController.navigationBar.autoresizesSubviews = YES;
  self.navigationController.navigationBar.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;

код выше будет работать автоматически, если это не так, вы пытаетесь это будет работать во всех методах делегатов вашего контроллера представления, где вам нужно изменить

- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft animated:animated];
[self.navigationController shouldAutorotateToInterfaceOrientation:[UIApplication sharedApplication].statusBarOrientation];
}

- (void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
   CGRect frame = self.navViewController.navigationBar.frame;
   frame.size = self.view.frame.size;
if (toInterfaceOrientation == UIInterfaceOrientationPortrait || toInterfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) {

    frame.size.height = 44;
} else {
    frame.size.height = 32;
}
self.navViewController.navigationBar.frame = frame;

если контроллер навигации является контроллером rootview, убедитесь, что он поддерживает все ориентации

   -(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
[super shouldAutorotateToInterfaceOrientation:toInterfaceOrientation];
[self.navigationController shouldAutorotateToInterfaceOrientation:toInterfaceOrientation];
        return YES;
    }

вы можете использовать этот код в перечисленных ниже делегатах viewcontroller в соответствии с вашими требованиями

- (void)viewDidAppear:(BOOL)animated
- (void)viewWillAppear:(BOOL)animated
– willRotateToInterfaceOrientation:duration:

– willAnimateRotationToInterfaceOrientation:duration:

– didRotateFromInterfaceOrientation:
0 голосов
/ 11 января 2012

Я бы использовал CGAffineTransform, возможно, в представлении навигационного контроллера?Просто поверните его, используя блок анимации на 90 градусов?

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