Cocoa Touch層包含了關鍵的庫來構建IOS應用。這些庫定義了應用的表現。他們提供應用的基本空間和提供關鍵技術,如多任務,以接觸為基礎的輸入,消息推送,和許多高級的系統服務。當你設計你的應用時候,你需要優先研究他們。
接下來的章節描述一些關鍵技術
App Extensions 應用擴展(App Extension Programming Guide) Handoff 傳送(Guide) Document Picker 文檔選擇器 (Guide) AirDrop TextKit (Guide) UIKit Dynamics Multitasking (Guide) Auto Layout (Guide) 故事板 Storyboards UI State Preservation 蘋果消息推動服務 Apple Push Notification Service Local and Remote Notification Programming Guide 手勢識別 Gesture Recognizers Event Handling Guide for iOS Standard System View Controllers (View Controller Programming Guide for iOS)每一個擴展的點定義了適當的APIs。當你使用應用擴展模板來開發,你可以獲得默認的目標,內容方法存根和你選擇的擴展屬性列表設置。
Handoff 傳送(Guide)
Handoff是OS X系統和IOS系統的一個特性,跨越設備的連續性延伸的用戶體驗。Handoff允許用戶在一個設備上執行一個活動,跳轉到其它設備,活膚一個相同的活動在其他設備上。例如,一個用戶在Safari上浏覽一篇長文章,摘取文章到一個使用相同AppleID的IOS設備上,或者在IOS的Safri上打開一篇相同的網頁,並且像原來的設備一樣,在同一個scroll點上。Handoff使得用戶感覺到無縫的用戶體驗。
應用只需要采用的一個小的API就可以使用Handoff。每個在應用裡進行的活動,將會在其他設備上恢復相應的內容活動。當用選擇回復活動,這個對象發送到將要恢復的設備上。每個用戶的活動對象有一個回調,在恰當的時間下恢復活動狀態,如,在用戶活動對象前,發送到設備間。
如果繼續一個活動需要許多數據,用戶的活動對象容易傳送。在恢復中的應用有一個選項來打開一個流到源應用。基於文檔的應用可以為用戶自動在基於iCloud文檔下支持活動。
Document Picker 文檔選擇器 (Guide)
Document Picker(UIDocumentPickerViewController)界面同意用戶訪問應用沙盒以外的文件。它是一個簡單的在應用間的分享原理。同時允許復合的工作流,因為用戶可以在不同應用裡修改一個文檔。
Document Picker讓你從許多文檔供應商裡訪問文件。例如,iCloud文檔提供者同意訪問在其他應用裡的iCloud的文檔存儲器。第三方開發者可以提供額外的文檔提供者來自擴展的存儲提供者。
AirDrop
AirDrop提供用戶在附近設備上分享圖片,文檔,鏈接和其他他不同的數據的能力。支持在UIActivityViewController類下分享文件到其他應用裡。這些類顯示不同的選項來分享內容到你指定的地方。如果你是用這個類,你需要考慮添加你的接口。
使用AirDrop接收文件,你需要
接收到的文件保存在Documents/Inbox 字典下,如果你計劃修改這個文件,你必須把它移出這個字典再做修改。(在Inbox下,系統只允許讀取和刪除文件)。文件在這個路徑下是被加密保護的,所以當設備鎖上的情況下,是不能獲取文件的。
TextKit (Guide)
TextKit是一個功能全面,一些列高級別的類,處理文本和精美的排版。使用TextKit,你可以在段落,專欄和頁面裡排出不同風格的版。你可以在任意區域使得文本像圖片一樣顯示。同時你可以使用它來管理不同的字體。如果你考慮使用Core Text來實現閱讀文字,你應該使用TextKit。TextKit是基於文本為基礎的完整庫。可以使應用更容易的創建,修改,顯示和存儲文本,和在IOS裡使用更少的代碼。
TextKit包含新的UIKIt類,隨著已經存在的類
UIKit Dynamics
應用現在可以在UIView對象制定動態行為,和對於其它對象也遵循UIDynamicItem 協議。(對象遵循這個協議叫dynamic item)。動態行為提供了一個方法,使得應用的用戶體驗,和真實世界的動態行為和特性相同。UIKit的動態支持以下特性:
當你添加它到一個動畫的對象上,動態行為變成活動的,這個動態對象定義為UIDynamicAnimator類。這個動畫提供的執行動態行為內容。一個動態ITem可以擁有多個行為,但是多有的行為都必須是運動在同一個動畫對象裡。
Multitasking (Guide)
電池文件是一個重要的用戶考量的IOS設備。在iOS的多任務模型的目的是最大限度地提高電池的壽命,同時給他們的應用需要做的重要的工作。當用戶按Home鍵,前景的應用會排位到背景。如果應用沒有太多的事情做,它就會被掛起,和放在一個凍結區域,內存不會在執行他的代碼。應用需要提供特定的工作類型來告訴系統請求後台時間。
Auto Layout (Guide)
自動適配幫你使用較少的代碼建設動態界面。使用自動適配,你可以為怎麼適配元素來定義規則在你的用戶界面上。這些規則表達了一大堆類的關系,更直觀的使用,比以前使用的springs and struts模型更直觀。例如,你可以定義一個按鍵總是距離父界面的左邊界20個像素點。
故事板 Storyboards
Storyboards,設計用戶界面的,一個推薦的方式。Storyboards讓你在一個地方設計你的用戶界面,因此你可以看到你所有的界面,view controller,和明白他們是怎麼一起工作的。一個重要的部分是,Storyboards有能力定義segues連接,他可以幫助view controller間的傳送。這些傳送允許你捕獲你設定好的界面流,除了內容。你可以在表面上定義這個傳送。在Xcode裡,或者程序初始化它們。
你可以使用一個簡單故事板文件,來存儲你的所有應用中的界面,和viewcontroller,或者使用多個故事板來管理。在創建的時候,Xcode會把故事板的文件內容和把它分成分立的部分,這部分可以更好的使得初始化裝載。你的應用不需要直接操作他們。UIKit庫提供了便捷的類來訪問故事板的內容。
UI State Preservation
狀態保留提供了無縫的用戶體驗來使得你的應用總是處於運行,盡管它沒有。如果系統的內存壓力,他可以快速的關閉一個或者多個後台與應用。當應用從前景移動到背景,他可以保護界面和view controller的狀態。到下一個周期,他可以保護信息狀態到重啟界面和viewcontroller,提供配置和讓他顯示和之前一樣的內容,而不是重新打開。
蘋果消息推動服務 Apple Push Notification Service Local and Remote Notification Programming Guide
蘋果消息推送服務提供一個方法,來告訴用戶IOS應用的新信息,即使這個應用沒有在運行。使用這個服務,你可以在任何時候推送文本消息,和添加一個應用圖標,或者音效在用戶設備。這些消息讓用戶知道,他們需要打開你的應用來接受相關信息。在IOS7,你可以推送靜態的消息讓你的應用知道,新的內容可以下載。
從設計的立場,這是兩個部分使得推送為IOS應用服務。第一,應用必須請求傳送通知,和當傳送後,馬上處理通知。第二,你需要提供服務端,第一時間處理生成的通知。這個處理需要在你自己的本地服務器和與蘋果推送服務一起工作才能生成通知。
Local Notifications (Local and Remote Notification Programming Guide)
本地通知補充現有的推送通知機制,為應用提供了一種生成的本地通知的方法,而不需要使用服務器。應用運行在後台的時候可以使用本地通知,來告訴用戶一些重要的事情發生了。如,導航應用運行來後台,可以使用本地通知來警告用戶什麼時候轉彎。應用同時可以設置一個在未來的時間本地通知,即使應用沒有在運行,也可以傳遞通知。
本地通知的一個好處是,他們是獨立於應用的。在設定好一個通知後,系統會管理傳遞他們,你的應用不需要運行。
手勢識別 Gesture Recognizers Event Handling Guide for iOS
手勢識別常用手勢的檢測,如,在你的應用裡swipes滑動和pinches捏。因為他們使用與系統一樣的手勢識別,所以手勢識別為應用提供了一致的行為。使用一個,在應用裡添加一個手勢識別,給他一個運作方法去執行手勢事件。手勢識別是一個來自原始觸碰的困難的最終工作和決定他們什麼時候是個手勢。
所有的手勢識別都是基於UIGestureRecognizer類,決定了基本行為。UIKit支持標准的手勢識別,如, taps輕拍, pinches捏, pans, swipes滑動, rotations旋轉等。你可以定義一些手勢識別在你的應用裡。例如,你可以告訴輕拍這個行為是定義多個輕拍來執行你的方法。
Standard System View Controllers (View Controller Programming Guide for iOS)
許多系統庫定義了view controller的標准系統界面。只要可能,使用提供的view controller好過自己定義的。更加鼓勵使用這些view controller在你的應用裡面實現你的用戶界面。只要可能你需要執行一個接下來的任務,你可以使用view controller來自相應的庫。
接下來要介紹的是這個庫和庫下的功能
2.0 通訊錄界面 AddressBookUI.framework
提供通訊錄的標准系統的顯示界面,同時可以創建新的通訊錄信息和修改已存在的信息。這個庫規范了通訊錄的界面,和簡化了顯示。使得所有程序使用的都是統一的界面。(AB)
4.0 日歷事件UI _EventKitUI.framework
_
為ViewController提供標准的系統日歷接口,來顯示和修改日歷事件。在EventKit庫裡,這個庫構建在關聯數據之上。(EK)
3.0 游戲 _GameKit.framework
_ (Guide)
支持Game Center,用戶可以使用它來分享游戲關聯的數據。(GK)
4.0 廣告 iAd.framework (Guide)
可以讓你在應用中投放以橫幅為基礎的廣告。廣告整合了標准的界面中,和推送你想要的界面。這個界面都是有蘋果iAD服務,自動的獲得相關的加載和推送不同的媒體,和處理廣告點擊事件。(AD)
3.0 地圖 MapKit.framework (Guide)
你可以把具有卷頁功能的地圖放在你的應用界面裡。在你顯示地圖之前,你可以通過這個庫來自動以地圖內容和顯示。你可以標志一個感興趣的點並且標記注釋,你也可以在地圖上用自定義覆蓋區域來點綴一個片區。例如,你可能是用一個區域來畫巴士車站,使用注釋來高亮附件的商店和飯店。
另外,顯示地圖的時候,這個庫結合了地圖應用和蘋果地圖服務來提供更好的導航。從地圖應用,用戶可以從應用上回調地圖導航。應用可以提供專業的導航類型,例如地鐵信息等。用戶可以請求這些導航。應用同時可以從蘋果服務器請求步行,和自駕導航,然後整合導航信息,提供點到點的導航路線給用戶。(MK)
3.0 信息UI MessageUI.framework (About System Messaging)
為你的應用提供Email和SMS短信顯示。這些信息通過一個ViewController來推送到界面上。你可以在填寫區域裡填寫收件人,主題,主要內容,和附件。在展示界面後,用戶可以在發送前修改裡面的信息。(MF)
8.0 通知 NotificationCenter.framework (Guide)
創建一個小組件在信息中心顯示通知。(NK)
8.0 推送 PushKit.framework
提供注冊支持VoIP應用。這個庫替換以前注冊VoIP應用的IPAs。取而代之的是保持一個持續的連接,因此消耗電源,當有電話信號進來時,應用可以通過這個應用獲得通知。(PK)
5.0 Twitter Twitter.framework
已經被Social庫替換了。支持tweets的UI,和提供創建Urls來訪問Twitter服務。(TW)
2.0 界面 UIKit.framework
在IOS下,創建實現圖形的關鍵基礎設施,事件驅動的應用程序(UI)