iOS UIDevice设备信息

识别设备和操作系统

Swift 复制代码
//获得共享设备实例
open class var current: UIDevice { get }

//识别设备的名称
open var name: String { get } // e.g. "My iPhone"

//设备类型
open var model: String { get } // e.g. @"iPhone", @"iPod touch"

//本地化设备类型
open var localizedModel: String { get } // localized version of model

//操作系统名称
open var systemName: String { get } // e.g. @"iOS"

//操作系统版本
open var systemVersion: String { get } // e.g. @"4.0"

//是否支持多任务
open var isMultitaskingSupported: Bool { get }

设备方向

Swift 复制代码
//返回设备的物理方向
open var orientation: UIDeviceOrientation { get }

//是否开启面向设备的方向通知更改
open var isGeneratingDeviceOrientationNotifications: Bool { get }

//开始面向设备的方向通知更改
open func beginGeneratingDeviceOrientationNotifications() // nestable

//结束面向设备的方向通知更改
open func endGeneratingDeviceOrientationNotifications()
Swift 复制代码
public enum UIDeviceOrientation : Int {
    case unknown = 0 //设备的方向不能确定
    case portrait = 1 //设备竖向朝上
    case portraitUpsideDown = 2 //设备竖向朝下
    case landscapeLeft = 3 //设备横向朝左
    case landscapeRight = 4 //设备横向朝右
    case faceUp = 5 //设备平放朝上
    case faceDown = 6 //设备平放朝下
}
Swift 复制代码
extension UIDeviceOrientation {
    public var isPortrait: Bool { get }//竖向
    public var isLandscape: Bool { get }//横向
    public var isFlat: Bool { get }//平放
    public var isValidInterfaceOrientation: Bool { get }
}

设备方向监测

Swift 复制代码
//开启监听设备方向
UIDevice.current.beginGeneratingDeviceOrientationNotifications()
//注册监听设备方向事件
NotificationCenter.default.addObserver(self, selector: #selector(orientationDidChange), name: UIDevice.orientationDidChangeNotification, object: nil)
Swift 复制代码
//关闭监听设备方向
UIDevice.current.endGeneratingDeviceOrientationNotifications()
//注销监听设备方向事件
NotificationCenter.default.removeObserver(self, name: UIDevice.orientationDidChangeNotification, object: nil)
Swift 复制代码
@objc func orientationDidChange() {
    //竖屏
    print("isPortrait", UIDevice.current.orientation.isPortrait)
    //横屏
    print("isLandscape", UIDevice.current.orientation.isLandscape)
    //平放
    print("isFlat", UIDevice.current.orientation.isFlat)
    //竖起
    print("isValidInterfaceOrientation", UIDevice.current.orientation.isValidInterfaceOrientation)
}

设备的电池状态

Swift 复制代码
//电量
open var batteryLevel: Float { get }

//电池状态
open var batteryState: UIDevice.BatteryState { get }

//开启电池监测
open var isBatteryMonitoringEnabled: Bool

UIDeviceBatteryState电池供电的设备状态

Swift 复制代码
public enum BatteryState : Int {
    case unknown = 0    //设备的电池状态不能确定
    case unplugged = 1    //设备不是插入电源,电池放电
    case charging = 2    //设备插入电源和电池充电不到100%
    case full = 3        //设备插入电源和电池充电100%
}

电池电量监测

Swift 复制代码
//开启电量监测
UIDevice.current.isBatteryMonitoringEnabled = true
//注册电量监测事件
NotificationCenter.default.addObserver(self, selector: #selector(batteryDidChange), name: UIDevice.batteryLevelDidChangeNotification, object: nil)
Swift 复制代码
@objc func batteryDidChange() {
    print("batteryLevel", UIDevice.current.batteryLevel)
}
相关推荐
张飞签名上架9 小时前
深耕全球市场:App上架iOS与Google Play全流程指南
macos·ios·cocoa·ios上架·上架·谷歌上架
Digitally11 小时前
iPhone 无法向安卓设备发送图片:轻松解决
android·ios·iphone
阿里云云原生11 小时前
RUM 助力 iOS 应用稳定性:从异常捕获到堆栈还原的全流程分析
人工智能·阿里云·ios·云原生·rum
初级代码游戏21 小时前
iOS只剩美工了吗?时间都被遮盖看不清了
ios·界面设计·美工
2501_915918411 天前
iOS 开发中证书创建与管理中的常见问题
android·ios·小程序·https·uni-app·iphone·webview
00后程序员张1 天前
IOScer 开发环境证书包括哪些,证书、描述文件与 App ID 的协同管理实践
android·ios·小程序·https·uni-app·iphone·webview
江东小bug王1 天前
深入理解 UITabBarController:代理方法与 ViewController 生命周期的执行顺序(含 UINavigationController 场景)
ios
阿里云云原生1 天前
RUM 赋能 iOS App 稳定:从异常体系到监控方案的全方位解析!
ios·云原生
Zfox_1 天前
无缝穿越系统边界:节点小宝4.0如何让我的Mac/iOS像访问本地盘一样操控Windows
windows·macos·ios·节点小宝
Zender Han1 天前
Flutter 图片裁剪插件 image_cropper 最新版介绍与使用教程
android·flutter·ios