Разделите альбомную и альбомную ориентацию в iOS8 с помощью Objective C

У меня есть отдельные альбомные и портретные представления в iOS7, используя код ниже:

-(void)didRotateFromInterfaceOrientation:    (UIInterfaceOrientation)fromInterfaceOrientation {
    if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_7_1) {

    CGRect currentBounds=self.view.bounds;

    if (iPadInt==0) {
        if (self.interfaceOrientation==UIInterfaceOrientationLandscapeRight) {
            self.view=self.landscapeQuestionView;
            self.view.transform=CGAffineTransformMakeRotation((kDeg2Rad)*(90));
        } else if (self.interfaceOrientation==UIInterfaceOrientationLandscapeLeft) {
            self.view=self.landscapeQuestionView;
            self.view.transform=CGAffineTransformMakeRotation((kDeg2Rad)*(-90));
        } else if (self.interfaceOrientation==UIInterfaceOrientationPortrait) {
            self.view=self.portraitQuestionView;
            self.view.transform=CGAffineTransformMakeRotation(0);
        } else if (self.interfaceOrientation==UIInterfaceOrientationPortraitUpsideDown) {
            self.view=self.portraitQuestionView;
            self.view.transform=CGAffineTransformMakeRotation((kDeg2Rad)*(180));
        } self.view.bounds=currentBounds;
    } else if (iPadInt==1) {
        if (self.interfaceOrientation==UIInterfaceOrientationLandscapeRight) {
            self.view=self.iPadLandscapeQuestionView;
            self.view.transform=CGAffineTransformMakeRotation((kDeg2Rad)*(90));
        rotationInt=90;
        } else if (self.interfaceOrientation==UIInterfaceOrientationLandscapeLeft) {
            self.view=self.iPadLandscapeQuestionView;
            self.view.transform=CGAffineTransformMakeRotation((kDeg2Rad)*(-90));
             rotationInt=90;
        } else if (self.interfaceOrientation==UIInterfaceOrientationPortrait) {
            self.view=self.iPadPortraitQuestionView;
            self.view.transform=CGAffineTransformMakeRotation(0);
            rotationInt=0;
        } else if (self.interfaceOrientation==UIInterfaceOrientationPortraitUpsideDown) {
            self.view=self.iPadPortraitQuestionView;
            self.view.transform=CGAffineTransformMakeRotation((kDeg2Rad)*(180));
            rotationInt=0;
        } self.view.bounds=currentBounds;
    }
}

Я знаю, что должен использовать метод viewWillTransitionToSize в iOS8, но я не могу понять, как получить эти различные представления в этом методе. Заранее благодарю за любую помощь.

1 ответ

Здесь есть тема: методы ротации устарели, эквивалент "didRotateFromInterfaceOrientation"?

Я думаю, что в вашей ситуации вы можете использовать viewWillTransitionToSize: вот так:

-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
    [coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context)
     {
         //get orientation
         UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
         //check orientation
         if (orientation==UIInterfaceOrientationPortrait)
         {
             NSLog(@"portrait");
         }
         else if(orientation==UIInterfaceOrientationPortraitUpsideDown)
         {
             NSLog(@"upside-down");
         }
         else if(orientation==UIInterfaceOrientationLandscapeRight)
         {
             NSLog(@"landscape right");
         }
         else if(orientation==UIInterfaceOrientationLandscapeLeft)
         {
             NSLog(@"landscape left");
         }
     } completion:^(id<UIViewControllerTransitionCoordinatorContext> context)
     {

     }];
}
Другие вопросы по тегам