Swift - 获取状态栏一些信息

本文介绍了一种使用Swift语言在iOS设备上获取状态栏信息的方法,包括网络类型、运营商名称、电池电量及系统时间等内容。通过枚举和类方法实现了不同状态的检测与读取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

//  获取状态栏的各种信息 :网络类型,运营商,电池电量,显示的系统时间等信息

import UIKit

enum NetWorkType {
    case NetworkStatesNone // 没有网络
    case NetworkStates2G // 2G
    case NetworkStates3G // 3G
    case NetworkStates4G // 4G
    case NetworkStatesWIFI // WIFI
}

class StatusBarInfo: NSObject {


    // 获取运营商 名称
    class func serviceCompany() -> String {
        let array :NSArray = (UIApplication.sharedApplication().valueForKeyPath("statusBar")?.valueForKeyPath("foregroundView")?.subviews)!

        for info in array {
            if info.isKindOfClass(NSClassFromString("UIStatusBarServiceItemView")!) {
                let serverStr:String = info.valueForKeyPath("serviceString") as! String
                return serverStr
            }
        }
        return ""

    }


    // 显示系统时间
    class func currentTimeString() -> String {
        let array :NSArray = (UIApplication.sharedApplication().valueForKeyPath("statusBar")?.valueForKeyPath("foregroundView")?.subviews)!

        for info in array {
            if info.isKindOfClass(NSClassFromString("UIStatusBarTimeItemView")!) {
                let timeStr:String = info.valueForKeyPath("timeString") as! String
                return timeStr
            }
        }
        return ""

    }

    // 检测网络状态
    class func currentNetworkType() -> NetWorkType {
        let array :NSArray = (UIApplication.sharedApplication().valueForKeyPath("statusBar")?.valueForKeyPath("foregroundView")?.subviews)!
        var states :NetWorkType = .NetworkStatesNone
        for info in array {
            if info.isKindOfClass(NSClassFromString("UIStatusBarDataNetworkItemView")!) {
                let networkType = info.valueForKeyPath("dataNetworkType")!.integerValue
                switch (networkType) {
                case 0:
                    states = .NetworkStatesNone;
                    //无网模式
                    break;
                case 1:
                    states = .NetworkStates2G;
                    break;
                case 2:
                    states = .NetworkStates3G;
                    break;
                case 3:
                    states = .NetworkStates4G;
                    break;
                case 5:
                    states = .NetworkStatesWIFI;
                    break;
                default:
                    break;
                }

            }
        }
        return states

    }

    // 获取当前的电量信息
    class func currentBatteryPercent() -> String {
        let array :NSArray = (UIApplication.sharedApplication().valueForKeyPath("statusBar")?.valueForKeyPath("foregroundView")?.subviews)!
        for info in array {
            if info.isKindOfClass(NSClassFromString("UIStatusBarBatteryPercentItemView")!) {
                let presentStr:String = info.valueForKeyPath("percentString") as! String
                return presentStr
            }
        }
        return ""

    }
}

转载于:https://www.cnblogs.com/gongyuhonglou/p/6599544.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值