iOS 获取屏幕的朝向

//检测屏幕朝向变化
-(void)startDeviceOrientationChangeListener {
    [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(deviceOrientationDidChange) name:UIDeviceOrientationDidChangeNotification object:nil];
}

-(void)deviceOrientationDidChange {
    /*
     typedef NS_ENUM(NSInteger, UIDeviceOrientation) {
     UIDeviceOrientationUnknown,
     UIDeviceOrientationPortrait,            // Device oriented vertically, home button on the bottom
     UIDeviceOrientationPortraitUpsideDown,  // Device oriented vertically, home button on the top
     UIDeviceOrientationLandscapeLeft,       // Device oriented horizontally, home button on the right
     UIDeviceOrientationLandscapeRight,      // Device oriented horizontally, home button on the left
     UIDeviceOrientationFaceUp,              // Device oriented flat, face up
     UIDeviceOrientationFaceDown             // Device oriented flat, face down
     };
     */
    UIDeviceOrientation orientation = [UIDevice currentDevice].orientation;
    NSMutableString *orientationDescription = [[NSMutableString alloc] initWithFormat:@"%ld ", orientation];
    switch (orientation) {
        case UIDeviceOrientationUnknown:
            [orientationDescription appendFormat:@"%@", @"UIDeviceOrientationUnknown"];
            break;
        case UIDeviceOrientationPortrait:
            [orientationDescription appendFormat:@"%@", @"UIDeviceOrientationPortrait"];
            break;
        case UIDeviceOrientationPortraitUpsideDown:
            [orientationDescription appendFormat:@"%@", @"UIDeviceOrientationPortraitUpsideDown"];
            break;
        case UIDeviceOrientationLandscapeLeft:
            [orientationDescription appendFormat:@"%@", @"UIDeviceOrientationLandscapeLeft"];
            break;
        case UIDeviceOrientationLandscapeRight:
            [orientationDescription appendFormat:@"%@", @"UIDeviceOrientationLandscapeRight"];
            break;
        case UIDeviceOrientationFaceUp:
            [orientationDescription appendFormat:@"%@", @"UIDeviceOrientationFaceUp"];
            break;
        case UIDeviceOrientationFaceDown:
            [orientationDescription appendFormat:@"%@", @"UIDeviceOrientationFaceDown"];
            break;
    }
    NSLog(@"%@", orientationDescription);
}

我在模拟器上进行测试时发现:第一次会先打印“UIDeviceOrientationUnknown”,接着立马打印“UIDeviceOrientationPortrait”,间隔只有3毫秒左右(当时并没有改变设备方向)

2016-06-21 00:34:31.782 SensorDemo[599:15448] 0 UIDeviceOrientationUnknown
2016-06-21 00:34:31.785 SensorDemo[599:15448] 1 UIDeviceOrientationPortrait


你可能感兴趣的:(iOS)