iOS判断竖屏锁定是否开启

在一些屏幕旋转的业务逻辑中,有时候需要根据手机是否开启了竖屏锁定进行不同的处理。
iPhone开启/关闭竖屏锁定,在状态栏中会有对应图标的变化,下面代码的判断方法,就是通过遍历查找是否存在竖屏锁定的视图来判断的。

- (BOOL)isProtraitLockOn {
    UIApplication *app = [UIApplication sharedApplication];
    UIView *foregroundView = [[app valueForKeyPath:@"statusBar"] valueForKeyPath:@"foregroundView"];
    BOOL isOn = NO;
    for (id child in foregroundView.subviews) {
        @try {
            id item = [child valueForKey:@"item"];
            int type = [[item valueForKey:@"type"] intValue];
            /*
             UIStatusBarItem.type
             0, 时间
             3, 信号强度
             4, 运营商
             6, 网络
             8, 电池
             9, 电量百分比
             12, 蓝牙
             14, 闹钟
             18, 竖屏锁定
             34, 耳机
             */
            if (type == 18) {
                isOn = YES;
                break;
            }
        }@catch (NSException *e) {}
    }
    return isOn;
}

推荐阅读更多精彩内容