UIDevice(设备) 官方文档翻译 by kino

主题

当前设备的表示形式。

概述

使用UIDevice对象来获取关于设备的信息,比如分配的名称、设备模型、操作系统名称和版本。你还可以使用UIDevice实例来检测设备特征的变化,比如物理方向。你可以使用orientation属性获得当前的朝向,或者通过注册UIDeviceOrientationDidChangeNotification通知来接收变更通知。在使用这两种技术来获取定向数据之前,你必须使用beginGeneratingDeviceOrientationNotifications方法来启用数据传递。当你不再需要跟踪设备方向,调用endGeneratingDeviceOrientationNotifications方法来禁用通知的传递。
类似地,你可以使用UIDevice实例来获取关于电池充电状态(由batteryState属性描述)和充电水平(由batteryLevel属性描述)变化的信息和通知。UIDevice实例还提供了接近传感器状态(由proximityState属性描述)的访问。近距离传感器会检测用户是否将设备贴近自己的脸。只有在需要时才启用电池监测或接近感测。

UIDevice属性列表,属性需要获取currentDevice访问

@property(class, nonatomic, readonly) UIDevice *currentDevice;//返回一个表示当前设备的对象。
@property(nonatomic, readonly, getter=isMultitaskingSupported) BOOL multitaskingSupported;//一个布尔值,指示当前设备上是否支持多任务处理。
@property(nonatomic, readonly, strong) NSString *name;//标识设备的名称
@property(nonatomic, readonly, strong) NSString *systemName;//接收方表示的设备上运行的操作系统的名称。
@property(nonatomic, readonly, strong) NSString *systemVersion;//操作系统的当前版本。
@property(nonatomic, readonly, strong) NSString *model;//模型字符串可能的例子是@ " iPhone "和@ " iPod touch "。
@property(nonatomic, readonly, strong) NSString *localizedModel;//作为本地化字符串的设备模型。
@property(nonatomic, readonly) UIUserInterfaceIdiom userInterfaceIdiom;//在当前设备上使用的接口样式。//对于通用应用程序,可以使用此属性为特定类型的设备定制应用程序的行为。例如,iPhone和iPad设备有不同的屏幕大小,因此您可能希望根据当前设备的类型创建不同的视图和控件。
@property(nullable, nonatomic, readonly, strong) NSUUID *identifierForVendor;//一个由字母和数字组成的字符串,唯一地为应用程序的供应商标识设备。
@property(nonatomic, readonly) UIDeviceOrientation orientation;//返回设备的物理方向。//属性的值是一个常量,它指示设备的当前方向。这个值代表设备的物理方向,可能与你的应用程序的用户界面的当前方向不同。关于可能值的描述,请参阅下面总结的UIDeviceOrientation。
该属性的值总是返回0,除非通过调用beginGeneratingDeviceOrientationNotifications来启用定向通知。
@property(nonatomic, readonly, getter=isGeneratingDeviceOrientationNotifications) BOOL generatesDeviceOrientationNotifications;//一个布尔值,指示接收方是否生成方向通知(YES)。

枚举UIDeviceOrientation

UIDeviceOrientationUnknown//无法确定设备的方向。
UIDeviceOrientationPortrait//设备处于竖屏模式,垂直手持设备,home键在底部。
UIDeviceOrientationPortraitUpsideDown//设备处于竖屏模式,但却是倒置的,设备被垂直手持,home键在顶部。
UIDeviceOrientationLandscapeLeft//设备处于横屏模式,垂直手持设备,home键在右侧。
UIDeviceOrientationLandscapeRight//设备处于横屏模式,垂直手持设备,home键在左侧。
UIDeviceOrientationFaceUp//设备与地面平行,屏幕朝上。
UIDeviceOrientationFaceDown//手持设备与地面平行,屏幕朝下。

判断设备方向的函数

BOOL UIDeviceOrientationIsFlat(UIDeviceOrientation orientation);//返回一个布尔值,该值指示指定的方向是朝上还是朝下。
BOOL UIDeviceOrientationIsLandscape(UIDeviceOrientation orientation);//返回一个布尔值,该值指示设备是否处于横向。
BOOL UIDeviceOrientationIsPortrait(UIDeviceOrientation orientation);//返回一个布尔值,该值指示设备是否处于纵向方向。
BOOL UIDeviceOrientationIsValidInterfaceOrientation(UIDeviceOrientation orientation);//返回一个布尔值,指示指定的方向是纵向方向还是横向方向之一。

方法

beginGeneratingDeviceOrientationNotifications//开始生成设备方向改变的通知。
endGeneratingDeviceOrientationNotifications//结束设备方向变化通知的生成。

判断设备的电池状态

@property(nonatomic, readonly) float batteryLevel;//设备的电池充电水平。电池电量范围从0.0(完全放电)到1.0(100%充电)。在访问此属性之前,请确保电池监控已启用。
如果未启用电池检测,电池状态为UIDeviceBatteryStateUnknown,该属性的值为-1.0。
@property(nonatomic, getter=isBatteryMonitoringEnabled) BOOL batteryMonitoringEnabled;//一个布尔值,指示是否启用电池检测(YES)或否(NO)。
@property(nonatomic, readonly) UIDeviceBatteryState batteryState;//设备的电池状态。
@property(nonatomic, readonly) BOOL proximityState;//一个布尔值,指示接近传感器是否接近用户(YES) (NO)。

UIDeviceBatteryState 枚举

UIDeviceBatteryStateUnknown//无法确定设备的电池状态。
UIDeviceBatteryStateUnplugged//设备未插电源;电池正在放电。
UIDeviceBatteryStateCharging//设备已插入电源,电池电量不足100%。
UIDeviceBatteryStateFull//设备插入电源,电池100%充满电。

自定义键盘支持点击声音的效果

- (void)playInputClick;//在启用的输入视图中单击。使用此方法播放标准系统键盘点击以响应用户在自定义输入或键盘附件视图中点击。只有当用户在“设置>声音”中启用了键盘点击,并且输入视图本身是启用和可见的时候,点击才会播放。
要为输入点击启用自定义输入视图或附件视图,请执行以下两个步骤:
在你的输入视图类中采用UIInputViewAudioFeedback协议。
实现enableInputClicksWhenVisible委托方法以返回YES。

UIUserInterfaceIdiom//具有特征环境的设备或对象的接口类型,例如视图和视图控制器。

经常用来判断是否为iphone,ipad

typedef enum UIUserInterfaceIdiom : NSInteger {
    UIUserInterfaceIdiomUnspecified = -1
UIUserInterfaceIdiomPhone//为iPhone和iPod touch设计的界面。
UIUserInterfaceIdiomPad//为iPad设计的界面。
UIUserInterfaceIdiomTV//An interface designed for tvOS and Apple TV.
UIUserInterfaceIdiomCarPlay//一个为车内体验而设计的界面。
UIUserInterfaceIdiomMac = 5//为Mac设计的接口。
} UIUserInterfaceIdiom;

函数UI_USER_INTERFACE_IDIOM//返回当前设备支持的接口风格(推荐运行在3.2之前iOS版本中的应用)。

通知:

UIDeviceBatteryLevelDidChangeNotification//电池电量变化时发送
UIDeviceBatteryStateDidChangeNotification//当电池状态改变时发送
UIDeviceOrientationDidChangeNotification//当设备的方向改变时发送
UIDeviceProximityStateDidChangeNotification//当接近传感器的状态改变时发送
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,287评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,346评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,277评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,132评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,147评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,106评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,019评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,862评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,301评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,521评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,682评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,405评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,996评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,651评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,803评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,674评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,563评论 2 352

推荐阅读更多精彩内容