分享

(原创)iOS支持iPhone X下的获取StatusBar的网络状态

 叹落花 2018-01-25
//获取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; }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多