//获取statusBar的网络状态 //支持iPhone X - (NSString *)getNetWorkStates{ NSArray *children; UIApplication *app = [UIApplication sharedApplication]; NSString *state = [[NSString alloc] init]; //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) { //wifi if ([child isKindOfClass:NSClassFromString(@"_UIStatusBarWifiSignalView")]) { state = @"wifi"; } //2G 3G 4G if ([child isKindOfClass:NSClassFromString(@"_UIStatusBarStringView")]) { if ([[child valueForKey:@"_originalText"] containsString:@"G"]) { state = [child valueForKey:@"_originalText"]; } } } } if (![state isStringValid]) { state = @"无网络"; } }else { children = [[[app valueForKeyPath:@"_statusBar"] valueForKeyPath:@"foregroundView"] subviews]; for (id child in children) { if ([child isKindOfClass:NSClassFromString(@"UIStatusBarDataNetworkItemView")]) { //获取到状态栏 switch ([[child valueForKeyPath:@"dataNetworkType"] intValue]) { case 0: state = @"无网络"; //无网模式 break; case 1: state = @"2G"; break; case 2: state = @"3G"; break; case 3: state = @"4G"; break; case 5: state = @"wifi"; break; default: break; } } } } return state; } |
|
来自: 叹落花 > 《iPhone X相关》