在一些屏幕旋转的业务逻辑中,有时候需要根据手机是否开启了竖屏锁定进行不同的处理。
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;
}