preferredInterfaceOrientationForPresentation must return a supported interface orientation

前端 未结 4 541
星月不相逢
星月不相逢 2020-11-29 07:11

This error doesn\'t make sense, as the preferred orientation UIInterfaceOrientationLandscapeRight is returned by the supported orientation

//iOS         


        
相关标签:
4条回答
  • 2020-11-29 07:42

    Those are the wrong enums for supportedInterfaceOrientations. You need to use UIInterfaceOrientationMaskLandscapeLeft, etc (note the word mask in the middle)

    0 讨论(0)
  • 2020-11-29 07:46

    from the documentation:

    -(NSUInteger)supportedInterfaceOrientations {
    
        return UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskLandscapeLeft; 
    }
    

    Note that the correct orientation is "Mask"! Did you try this?

    0 讨论(0)
  • 2020-11-29 07:50

    Your code should look like this:

    -(BOOL)shouldAutorotate
    {
        return NO;
    }
    
    -(NSUInteger)supportedInterfaceOrientations
    {
        return UIInterfaceOrientationMaskLandscape;
    }
    
    - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
    {
        return UIInterfaceOrientationLandscapeRight;
    }
    

    Also, make sure in your Info.plist you have set the correct orientations for you app because what you return from supportedInterfaceOrientations is intersected with the Info.plist and if it can't find a common one then you'll get that error.

    0 讨论(0)
  • 2020-11-29 07:58

    supportedInterfaceOrientations is only called, if shouldAutorotate is set to YES

    - (BOOL)shouldAutorotate
    {
        return YES;
    }
    
    - (NSUInteger)supportedInterfaceOrientations
    {
        return UIInterfaceOrientationMaskLandscape;
    }
    
    - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
    {
        return UIInterfaceOrientationLandscapeRight;
    }
    

    The easiest approach for me, is only to set the Info.plist

    info.plist

    If you like to support iOS 5 use this code in your view controllers.

    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
    {
    return UIInterfaceOrientationIsLandscape(interfaceOrientation);
    }
    
    0 讨论(0)
提交回复
热议问题