主題
當(dāng)前設(shè)備的表示形式。
概述
使用UIDevice對象來獲取關(guān)于設(shè)備的信息,比如分配的名稱、設(shè)備模型、操作系統(tǒng)名稱和版本。你還可以使用UIDevice實(shí)例來檢測設(shè)備特征的變化,比如物理方向。你可以使用orientation屬性獲得當(dāng)前的朝向,或者通過注冊UIDeviceOrientationDidChangeNotification通知來接收變更通知。在使用這兩種技術(shù)來獲取定向數(shù)據(jù)之前,你必須使用beginGeneratingDeviceOrientationNotifications方法來啟用數(shù)據(jù)傳遞。當(dāng)你不再需要跟蹤設(shè)備方向,調(diào)用endGeneratingDeviceOrientationNotifications方法來禁用通知的傳遞。
類似地,你可以使用UIDevice實(shí)例來獲取關(guān)于電池充電狀態(tài)(由batteryState屬性描述)和充電水平(由batteryLevel屬性描述)變化的信息和通知。UIDevice實(shí)例還提供了接近傳感器狀態(tài)(由proximityState屬性描述)的訪問。近距離傳感器會檢測用戶是否將設(shè)備貼近自己的臉。只有在需要時才啟用電池監(jiān)測或接近感測。
UIDevice屬性列表,屬性需要獲取currentDevice訪問
@property(class, nonatomic, readonly) UIDevice *currentDevice;//返回一個表示當(dāng)前設(shè)備的對象。
@property(nonatomic, readonly, getter=isMultitaskingSupported) BOOL multitaskingSupported;//一個布爾值,指示當(dāng)前設(shè)備上是否支持多任務(wù)處理。
@property(nonatomic, readonly, strong) NSString *name;//標(biāo)識設(shè)備的名稱
@property(nonatomic, readonly, strong) NSString *systemName;//接收方表示的設(shè)備上運(yùn)行的操作系統(tǒng)的名稱。
@property(nonatomic, readonly, strong) NSString *systemVersion;//操作系統(tǒng)的當(dāng)前版本。
@property(nonatomic, readonly, strong) NSString *model;//模型字符串可能的例子是@ " iPhone "和@ " iPod touch "。
@property(nonatomic, readonly, strong) NSString *localizedModel;//作為本地化字符串的設(shè)備模型。
@property(nonatomic, readonly) UIUserInterfaceIdiom userInterfaceIdiom;//在當(dāng)前設(shè)備上使用的接口樣式。//對于通用應(yīng)用程序,可以使用此屬性為特定類型的設(shè)備定制應(yīng)用程序的行為。例如,iPhone和iPad設(shè)備有不同的屏幕大小,因此您可能希望根據(jù)當(dāng)前設(shè)備的類型創(chuàng)建不同的視圖和控件。
@property(nullable, nonatomic, readonly, strong) NSUUID *identifierForVendor;//一個由字母和數(shù)字組成的字符串,唯一地為應(yīng)用程序的供應(yīng)商標(biāo)識設(shè)備。
@property(nonatomic, readonly) UIDeviceOrientation orientation;//返回設(shè)備的物理方向。//屬性的值是一個常量,它指示設(shè)備的當(dāng)前方向。這個值代表設(shè)備的物理方向,可能與你的應(yīng)用程序的用戶界面的當(dāng)前方向不同。關(guān)于可能值的描述,請參閱下面總結(jié)的UIDeviceOrientation。
該屬性的值總是返回0,除非通過調(diào)用beginGeneratingDeviceOrientationNotifications來啟用定向通知。
@property(nonatomic, readonly, getter=isGeneratingDeviceOrientationNotifications) BOOL generatesDeviceOrientationNotifications;//一個布爾值,指示接收方是否生成方向通知(YES)。
枚舉UIDeviceOrientation
UIDeviceOrientationUnknown//無法確定設(shè)備的方向。
UIDeviceOrientationPortrait//設(shè)備處于豎屏模式,垂直手持設(shè)備,home鍵在底部。
UIDeviceOrientationPortraitUpsideDown//設(shè)備處于豎屏模式,但卻是倒置的,設(shè)備被垂直手持,home鍵在頂部。
UIDeviceOrientationLandscapeLeft//設(shè)備處于橫屏模式,垂直手持設(shè)備,home鍵在右側(cè)。
UIDeviceOrientationLandscapeRight//設(shè)備處于橫屏模式,垂直手持設(shè)備,home鍵在左側(cè)。
UIDeviceOrientationFaceUp//設(shè)備與地面平行,屏幕朝上。
UIDeviceOrientationFaceDown//手持設(shè)備與地面平行,屏幕朝下。
判斷設(shè)備方向的函數(shù)
BOOL UIDeviceOrientationIsFlat(UIDeviceOrientation orientation);//返回一個布爾值,該值指示指定的方向是朝上還是朝下。
BOOL UIDeviceOrientationIsLandscape(UIDeviceOrientation orientation);//返回一個布爾值,該值指示設(shè)備是否處于橫向。
BOOL UIDeviceOrientationIsPortrait(UIDeviceOrientation orientation);//返回一個布爾值,該值指示設(shè)備是否處于縱向方向。
BOOL UIDeviceOrientationIsValidInterfaceOrientation(UIDeviceOrientation orientation);//返回一個布爾值,指示指定的方向是縱向方向還是橫向方向之一。
方法
beginGeneratingDeviceOrientationNotifications//開始生成設(shè)備方向改變的通知。
endGeneratingDeviceOrientationNotifications//結(jié)束設(shè)備方向變化通知的生成。
判斷設(shè)備的電池狀態(tài)
@property(nonatomic, readonly) float batteryLevel;//設(shè)備的電池充電水平。電池電量范圍從0.0(完全放電)到1.0(100%充電)。在訪問此屬性之前,請確保電池監(jiān)控已啟用。
如果未啟用電池檢測,電池狀態(tài)為UIDeviceBatteryStateUnknown,該屬性的值為-1.0。
@property(nonatomic, getter=isBatteryMonitoringEnabled) BOOL batteryMonitoringEnabled;//一個布爾值,指示是否啟用電池檢測(YES)或否(NO)。
@property(nonatomic, readonly) UIDeviceBatteryState batteryState;//設(shè)備的電池狀態(tài)。
@property(nonatomic, readonly) BOOL proximityState;//一個布爾值,指示接近傳感器是否接近用戶(YES) (NO)。
UIDeviceBatteryState 枚舉
UIDeviceBatteryStateUnknown//無法確定設(shè)備的電池狀態(tài)。
UIDeviceBatteryStateUnplugged//設(shè)備未插電源;電池正在放電。
UIDeviceBatteryStateCharging//設(shè)備已插入電源,電池電量不足100%。
UIDeviceBatteryStateFull//設(shè)備插入電源,電池100%充滿電。
自定義鍵盤支持點(diǎn)擊聲音的效果
- (void)playInputClick;//在啟用的輸入視圖中單擊。使用此方法播放標(biāo)準(zhǔn)系統(tǒng)鍵盤點(diǎn)擊以響應(yīng)用戶在自定義輸入或鍵盤附件視圖中點(diǎn)擊。只有當(dāng)用戶在“設(shè)置>聲音”中啟用了鍵盤點(diǎn)擊,并且輸入視圖本身是啟用和可見的時候,點(diǎn)擊才會播放。
要為輸入點(diǎn)擊啟用自定義輸入視圖或附件視圖,請執(zhí)行以下兩個步驟:
在你的輸入視圖類中采用UIInputViewAudioFeedback協(xié)議。
實(shí)現(xiàn)enableInputClicksWhenVisible委托方法以返回YES。
UIUserInterfaceIdiom//具有特征環(huán)境的設(shè)備或?qū)ο蟮慕涌陬愋?,例如視圖和視圖控制器。
經(jīng)常用來判斷是否為iphone,ipad
typedef enum UIUserInterfaceIdiom : NSInteger {
UIUserInterfaceIdiomUnspecified = -1
UIUserInterfaceIdiomPhone//為iPhone和iPod touch設(shè)計的界面。
UIUserInterfaceIdiomPad//為iPad設(shè)計的界面。
UIUserInterfaceIdiomTV//An interface designed for tvOS and Apple TV.
UIUserInterfaceIdiomCarPlay//一個為車內(nèi)體驗(yàn)而設(shè)計的界面。
UIUserInterfaceIdiomMac = 5//為Mac設(shè)計的接口。
} UIUserInterfaceIdiom;
函數(shù)UI_USER_INTERFACE_IDIOM//返回當(dāng)前設(shè)備支持的接口風(fēng)格(推薦運(yùn)行在3.2之前iOS版本中的應(yīng)用)。
通知:
UIDeviceBatteryLevelDidChangeNotification//電池電量變化時發(fā)送
UIDeviceBatteryStateDidChangeNotification//當(dāng)電池狀態(tài)改變時發(fā)送
UIDeviceOrientationDidChangeNotification//當(dāng)設(shè)備的方向改變時發(fā)送
UIDeviceProximityStateDidChangeNotification//當(dāng)接近傳感器的狀態(tài)改變時發(fā)送