Swift - 获取状态栏一些信息
// 获取状态栏的各种信息 :网络类型,运营商,电池电量,显示的系统时间等信息
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 ""
}
}
Swift - 获取状态栏一些信息的更多相关文章
- ?Swift获取手机设备信息
使用UiDevice获取设备信息: 获取设备名称 let name = UIDevice.currentDevice().name 获取设备系统名称 let systemName = UIDevice ...
- iOS开发-Swift获取手机设备信息(UIDevice)
使用UiDevice获取设备信息 获取设备名称 let name = UIDevice.currentDevice().name 获取设备系统名称 let systemName = UIDevice. ...
- iOS获取状态栏和导航栏尺寸(宽度和高度)
iPhone开发当中,有时需要获取状态栏和导航栏高度.宽度信息,方便布局其他控件.下面介绍一下如何获取这些信息: // 状态栏(statusbar) CGRect rectStatus = [[UIA ...
- Android获取状态栏高度、标题栏高度、编辑区域高度
一.Activity界面的划分 简单说明一下(上图Activity采用默认Style,状态栏和标题栏都会显示):最大的草绿色区域是屏幕界面,红色次大区域我们称之为"应用程序界面区域" ...
- Android之获取屏幕的尺寸像素及获取状态栏标题栏高度
在Android的实际开发中,会经常用到获取屏幕的尺寸的问题,以便设置一些布局在屏幕上的固定位置,从而适配各个屏幕的设备. 今天我就来讲一下怎么得到当前设备的屏幕像素吧: 一.在Activity中: ...
- iOS获取手机型号,Swift获取手机型号(类似iphone 7这种,检测机型具体型号)
获取手机设备信息,如name.model.version等, 但如果想获取具体的手机型号,如iphone5.5s这种,就需要如下这种(含Swift和OC两种写法) Swift建议添加到extensio ...
- iOS - 获取状态栏和导航栏尺寸(宽度和高度)
iPhone开发当中,有时需要获取状态栏和导航栏高度.宽度信息,方便布局其他控件.下面介绍一下如何获取这些信息: // 状态栏(statusbar) CGRect rectStatus = [[UIA ...
- 【转】iPhone获取状态栏和导航栏尺寸(宽度和高度)
原文网址:http://blog.csdn.net/chadeltu/article/details/42708605 iPhone开发当中,有时需要获取状态栏和导航栏高度.宽度信息,方便布局其他控件 ...
- sql 2012中获取表的信息,包含字段的描述
1.获取数据库中的表 select name from sysobjects where type='U' 2.获取表字段(此处是Route表) Select name from syscolumns ...
随机推荐
- *.ashx一般处理程序不能访问Session值的解决方法
<%@ WebHandler Language="C#" Class="productHandler" %> using System; using ...
- [转]安装openfire后admin无法登录管理控制平台
安装完openfire登录管理控制提示: Login failed:make sure your username and password are correct and that you’re a ...
- mysql -- 重装mysql失败的解决办法
最近遇到一些问题,将mysql卸载了重装,但总是出现安装不成功,应该是上一个mysql没卸载干净,于是各种找资料,前后弄了几个小时,终于给弄出来了,结合网上的资料,现总结如下: 1. 打开控制面板-添 ...
- php Laravel 框架之建立后台目录
今天研究了在Laravel框架中的控制器中加入后台的目录.发现了一些小的规律,拿来和大家分享一下吧. 通常情况下,我们是直接在controllers目录中加入我们的控制器,然后再routes.php ...
- hdu2147 kiki's game(博弈)
这个是纳什博弈?不知道怎么看的 依据PN图,从左下角開始推 左下角P 最后一行都是PNPNPN 第一列都是 P N P N P 完了填完即可了 #include<cstdio> int m ...
- (转载)UTF-8和GBK的编码方式的部分知识:重要
GBK的文字编码是双字节来表示的,即不论中.英文字符均使用双字节来表示,只不过为区分中文,将其最高位都定成1. 至于UTF-8编码则是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节) ...
- 【Java集合的详细研究5】Java中Array与ArrayList的主要区别
1)精辟阐述:可以将 ArrayList想象成一种“会自动扩增容量的Array”. 2)Array([]):最高效:但是其容量固定且无法动态改变: ArrayList: 容量可动态增长:但牺 ...
- MySQL索引覆盖
什么是“索引覆盖”? 简单来的说,就是让查询的字段(包括where子句中的字段),都是索引字段.索引覆盖的好处是什么?好处是极大的.极大的.极大的提高查询的效率!重要的说三遍! 特别说明: 1.whe ...
- 联想服务器thinkserver rd650安装 windows server 2008 r2
前几天,客户那边来电话说业务系统上不去了,远程连接发现密码也被改了,数据也没有备份出来,所以想使用 PE工具进入破解密码,具体的方法不多讲了,很多PE工具是自带更改密码的工具的,我们只要一步一步的按着 ...
- Java精选笔记_IO流(字符输入输出流、字符文件输入输出流、字符流的缓冲区)
字符流 Reader是字符输入流的基类,用于从某个源设备读取字符 Writer是字符输出流,用于向某个目标设备写入字符 字符流操作文件 字符输入流FileReader,通过此流可以从关联的文件中读取一 ...