Xcode: Getting warning “implicit conversion from enumeration type UIDeviceOrientation”

后端 未结 1 1806
离开以前
离开以前 2020-12-01 04:05

Full warning:

Implicit conversion from enumeration type \'UIInterfaceOrientation\' to different enumeration type \'UIDeviceOrientation\'

Ge

1条回答
  •  隐瞒了意图╮
    2020-12-01 04:40

    UIDeviceOrientation refers to the physical orientation of the device whereas UIInterfaceOrientation refers to the orientation of the user interface. When you call your method

    [self orientationChanged:interfaceOrientation];
    

    you are most likely passing it a UIDeviceOrientation when you should, according to the method, be using a UIInterfaceOrientation.

    Just to expand on this point a bit, UIDeviceOrientation is a property of the UIDevice class, and there are these possible values:

    UIDeviceOrientationUnknown - Can't be determined

    UIDeviceOrientationPortrait - Home button facing down

    UIDeviceOrientationPortraitUpsideDown - Home button facing up

    UIDeviceOrientationLandscapeLeft - Home button facing right

    UIDeviceOrientationLandscapeRight - Home button facing left

    UIDeviceOrientationFaceUp - Device is flat, with screen facing up

    UIDeviceOrientationFaceDown - Device is flat, with screen facing down

    As for UIInterfaceOrientation, it is a property of UIApplication and only contains 4 possibilities which correspond to the orientation of the status bar:

    UIInterfaceOrientationPortrait = UIDeviceOrientationPortrait,
    
    UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,
    
    UIInterfaceOrientationLandscapeLeft = UIDeviceOrientationLandscapeRight,
    
    UIInterfaceOrientationLandscapeRight = UIDeviceOrientationLandscapeLeft
    

    To get UIDeviceOrientation, you use

    [[UIDevice currentDevice] orientation]
    

    and to get UIInterfaceOrientation, you use

    [[UIApplication sharedApplication] statusBarOrientation] 
    

    0 讨论(0)
提交回复
热议问题