標籤:作業系統 開發人員 文檔 蘋果 執行個體
UIApplication/UIScreen/UIDevice平常用的很少;但畢竟是屬於UIKit的重要組成部分,有必要瞭解一下。
UIDevice
通過UIDevice可以擷取一個描述當前裝置的單例。你可以擷取以下裝置相關的資訊:裝置名稱,裝置型號,作業系統名稱和版本。
我們還可以通過UIDevice執行個體檢測裝置的變化,比方橫屏還是豎屏。Orientation屬性代表了裝置的方位,也可以通過註冊UIDeviceOrientationDidChangeNotification通知訊息來即時擷取方位變化。在要使用這些資料前,必須先通過beginGeneratingDeviceOrientationNotifications方法調用開啟該功能,然後調用endGeneratingDeviceOrientationNotifications禁用該功能。
此外,我們還能通過該執行個體擷取關於電量狀態變化的資訊和通知資訊(batteryState,batteryLevel)。還有就是關於接近感測資料(proximityState),接近感應器用於偵測使用者是否拿著手機並緊貼在臉龐。同樣的,只有在必要的時候才開啟以上兩項功能。
從iOS4.2開始,我們可以使用playInputClick執行個體方法響應使用者自訂的鍵盤操作。
UIApplication
UIApplication是一個控制和協調運行中應用的中心。任何一個應用有且僅有一個UIApplication(或是一個UIApplication的一個子類)。一旦應用啟動,UIApplicationMain就會被調用。在應用的某個任務中,這個函數會建立一個UIApplication單例。因此,你可以使用sharedApplication來擷取該對象。
UIApplication的一個重要作用,就是它是所有使用者操作事件傳遞鏈的開始。它也將由UIControl類傳遞給它的動作資訊,進一步分發合適的目標類。此外,UIApplication對象維護了所有在當前APP中開啟的windows的列表。應用對象一般都會有一個代理,用於處理應用運行時資訊,如:應用開啟,記憶體不足,應用關閉。因此應用有機會處理這些重要的資訊。
APP之前可以通過openURL方法進行協作,如處理資源類似email和影像檔。比方,一個應用開啟了調用了email URL,使用這個方法可以開啟郵件用戶端並顯示資訊。
UIApplication介面允許你管理裝置相關的行為,具體如下:
在裝置方位變化時,控制應用的反應;
臨時阻斷觸摸事件。
開啟和關閉接近感應器。
註冊遠程通知訊息。
觸發撤銷或重做UI (applicationSupportsShakeToEdit)
檢測一個安裝好的應用是否可以開啟一個URL(canOpenURL:).
在應用退到後台前,讓它在後台還能再運行一下,完成一些收尾工作。
調度或中止本地通知。
協同處理接收到的遠端控制事件。
重新恢複應用的狀態。
絕大多數的應用不需要建立UIApplication子類,只需要使用UIApplication的代理函數管理系統和應用之間的互動。
如果你需要實現自訂一個事件或動作分發系統時,你才需要建立UIApplication子類。這樣的話,你需要重寫sendEvent或sendAction方法來自訂分發機制。我們盡量避免這種情況。
UIScreen
UIScreen對象定義了與硬體顯示屏相關的屬性。iOS裝置有個主屏,外加0個或多個附屏。這個類可以擷取所有與裝置相關的螢幕。Screen類定義了bounds,以及其他屬性如對比。
在iOS8之前,screen的bounds屬性一定反映了螢幕在豎屏情況的尺寸。旋轉螢幕成為橫屏或倒立情況都不會改變bounds屬性。從iOS8開始,bounds屬性參考裝置方位的變化。依賴螢幕尺寸的應用可以使用fixedCoordinateSpace屬性來修正點在座標中的位置。
當使用者串連或斷開螢幕時,系統會發送通知給應用。利用代理可以長時間的監控通知資訊。串連和斷開的通知可能隨時發生,也許這時你的應用在後台被掛起。在應用掛起時,通知會儲存在隊列中,直到你的app’在前台或後台又開始運行時。
但系統通知外部屏串連上時,你可以隨意使用這個額外的螢幕空間。為使用這個空間,需要建立uiwindow對象,為新的screen進行賦值,顯示到window上。螢幕支援多種解析度,其中使用不同的像素寬高比。螢幕對象使用最普通的螢幕模式,你也可以設定適合你的模式。比方,如果你在遊戲應用中使用OpenGL
ES,依據640*480設計了紋理,你可以更新螢幕模式為更高的解析度。
總結:1,開發中接觸到UIApplication/UIScreen/UIDevice的機會不多;而且大多是簡單的應用;對其有個大概瞭解即可;2,以上內容都翻譯自蘋果官方內容,以下為連結https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIDevice_Class/index.html#//apple_ref/occ/cl/UIDevicehttps://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplication_Class/index.html#//apple_ref/occ/cl/UIApplicationhttps://developer.apple.com/library/ios/documentation/UIKit/Reference/UIScreen_Class/index.html#//apple_ref/occ/cl/UIScreen
學的越多,做的越快;學的越多,做的越好;
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
Apple開發人員文檔中關於UIApplication/UIScreen/UIDevice的簡述