某恶心需求:不根据网络状态,纯粹根据statusBar判断飞行模式是否开启。
通过Hack StatusBar的层级,判断是否有“✈️”的标志,以此来判断是否打开了飞行模式。
慎用此方法,无法保证以后iOS系统更新或出新机型后,是否会造成crash!!!
//iPhone X
if ([[app valueForKeyPath:@"_statusBar"] isKindOfClass:NSClassFromString(@"UIStatusBar_Modern")]) {
children = [[[[app valueForKeyPath:@"_statusBar"] valueForKeyPath:@"_statusBar"] valueForKeyPath:@"foregroundView"] subviews];
for (UIView *view in children) {
for (id child in view.subviews) {
if ([child isKindOfClass:NSClassFromString(@"_UIStatusBarImageView")]) {
state = @"airPlane";
}
}
}
} else { //其他机型
children = [[[app valueForKeyPath:@"statusBar"] valueForKeyPath:@"foregroundView"] subviews];
for (id child in children) {
if ([child isKindOfClass:NSClassFromString(@"UIStatusBarAirplaneModeItemView")]) {
state = @"airPlane";
}
}
}
网友评论