[IOS/翻譯]Cocoa Touch Layer
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)App Extensions 應用擴充(
App Extension Programming Guide)
IOS8讓你在系統擴充地區中使用應用擴充,可以實現自訂功能在一個使用者任務中。例如,你可以提供一個應用的擴充,協助使用者發送內容到公用分享網路。當使用者安裝和可使用擴充之後,他們可以選擇在當前的應用裡點擊分享按鍵分享。你的自訂分享擴充給予接受,驗證和發送使用者內容。系統的擴充列表在共用菜單和依賴於使用者選擇。
在Xcode中,你建立應用擴充來添加預配置的應用擴充到應用裡。 在一個使用者安裝一個包含擴充的應用後,“Setting應用”裡面就有這個擴充了。當用運行其他引用,這個系統可以可視化擴充在系統的UI裡,例如分享菜單。
IOS支援應用擴充 分享,分享內容到公用網路或者其他地方。 執行。執行一個小的任務 小工具,提供一個快速升級或者允許一個簡要式的任務在今日介面的訊息中心裡 圖片編輯,在Photo應用裡執行一個圖片或者視頻的修改 文檔提供者,給予一個文檔本地儲存,使得其它應用可以訪問。應用使用Picker介面來管理或移動檔案。 自訂鍵盤,在裝置上所有應用,用可以使用自訂鍵盤
每一個擴充的點定義了適當的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接收檔案,你需要
需要在Xocde的Info.plist添加適當的文件類型關鍵字。系統使用這些資訊來決定你的應用可以使用它 當應用接收到檔案,在應用裡實現這個回調方application:openURL:sourceApplication:annotation:
已接收的檔案儲存在Documents/Inbox 字典下,如果你計劃修改這個檔案,你必須把它移出這個字典再做修改。(在Inbox下,系統只允許讀取和刪除檔案)。檔案在這個路徑下是被加密保護的,所以當裝置鎖上的情況下,是不能擷取檔案的。
TextKit (Guide)
TextKit是一個功能全面,一些列進階別的類,處理文本和精美的排版。使用TextKit,你可以在段落,專欄和頁面裡排出不同風格的版。你可以在任意地區使得文本像圖片一樣顯示。同時你可以使用它來管理不同的字型。如果你考慮使用Core Text來實現閱讀文字,你應該使用TextKit。TextKit是基於文本為基礎的完整庫。可以使應用更容易的建立,修改,顯示和儲存文本,和在IOS裡使用更少的代碼。
TextKit包含新的UIKIt類,隨著已經存在的類
NSAttributedString類,可以支援新的特性。 NSLayoutManager 類,產生字形和文本排版 NSTextContainer類,定義一個地區的文本排版 NSTextStorage定義一個基礎介面用於管理常值內容
UIKit Dynamics
應用現在可以在UIView對象制定動態行為,和對於其它對象也遵循UIDynamicItem 協議。(對象遵循這個協議叫dynamic item)。動態行為提供了一個方法,使得應用的使用者體驗,和真實世界的動態行為和特性相同。UIKit的動態支援以下特性:
UIAttachmentBehavior類, 定義一種串連關係,在兩個動態物體或者一個動態物體和一個點。當其中一個移動,撞擊另一個,另一個同樣移動。這個串連不是完全靜態。一個撞擊行為還有跳動和震動屬性,來決定這個行為怎麼變化。 UICollisionBehavior類,使得動態items加入到碰撞下,和每一個item和這個item的邊緣碰撞。這個行為同時使得他們在碰撞後做出適當的反應。 UIGravityBehavior類,為動態item添加重力向量。重力向量使得動態items在向量方向上加速直到碰撞到適當的邊界。 UIPushBehavior類,定義一個串連的或者瞬間的按壓的動態items UISnapBehavior類,為一個動態item定義一個彈性點。這個Item 彈到一個點上表現出配置好的效果。例如,動態item可以彈到一個點上,像攻擊到彈簧上。
當你添加它到一個動畫的對象上,動態行為變成活動的,這個動態對象定義為UIDynamicAnimator類。這個動畫提供的執行動態行為內容。一個動態ITem可以擁有多個行為,但是多有的行為都必須是運動在同一個動畫對象裡。
Multitasking (Guide)
電池檔案是一個重要的使用者考量的IOS裝置。在iOS的多任務模型的目的是最大限度地提高電池的壽命,同時給他們的應用需要做的重要的工作。當使用者按Home鍵,前景的應用會排位到背景。如果應用沒有太多的事情做,它就會被掛起,和放在一個凍結地區,記憶體不會在執行他的代碼。應用需要提供特定的工作類型來告訴系統請求後台時間。
應用和請求有限的時間來完成一些重要的任務 應用可以支援特定的服務來請求實現給予這些服務,如播放 應用可以使用特定時間的本地通知來產生使用者通知,即使應用沒有在運行 應用可以從網路下載特定內容 應用可以下載內容後推送一個訊息
Auto Layout (Guide)
自動適配幫你使用較少的代碼建設動態介面。使用自動適配,你可以為怎麼適配元素來定義規則在你的使用者介面上。這些規則表達了一大堆類的關係,更直觀的使用,比以前使用的springs and struts模型更直觀。例如,你可以定義一個按鍵總是距離父介面的左邊界20個像素點。
他們支援本地化通過單獨的字串交換,而不是要求您更新你的布局。 它們支援使用者介面元素的鏡像,以供右至左語言,如希伯來和阿拉伯語 他們在介面裡的或者controller層上對象間提供更好的分割責任
一個介面對象通常擁有標準的大小,他們在父介面下定位,和與自身的同等級的介面有位置關係。一個介面的控制可以推翻那些不按標準的需求。
故事板 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來自相應的庫。
顯示和修改相關的資訊。使用Address Book UI庫的view controller 建立和修改日曆事件,使用EventKit UI庫的view controller 編寫郵件或者SMS,使用Message UI庫的view controller 開啟或者預覽檔案內容,使用UIKit庫的UIDocumentInteractionController類 照相或者在相簿裡懸著一個相片,使用UIKit庫的UIImagePickerController類 拍攝視訊剪輯,使用UIKit庫的UIImagePickerController類Cocoa Touch Layer
接下來要介紹的是這個庫和庫下的功能
列表
2.0 通訊錄介面
AddressBookUI.framework (AB)
4.0 日曆事件UI _EventKitUI.framework
_(EK)
3.0 遊戲 _GameKit.framework
_ (
Guide) (GK)
4.0 廣告
iAd.framework (
Guide)(AD)
3.0 地圖
MapKit.framework (
Guide)(MK)
3.0 資訊UI
MessageUI.framework (
About System Messaging)(MF)
8.0 通知
NotificationCenter.framework (
Guide)(NK)
8.0 推送
PushKit.framework (PK)
5.0 Twitter
Twitter.framework(TW)
2.0 介面
UIKit.framework(UI)
2.0 通訊錄介面 AddressBookUI.framework
提供通訊錄的標準系統的顯示介面,同時可以建立新的通訊錄資訊和修改已存在的資訊。這個庫規範了通訊錄的介面,和簡化了顯示。使得所有程式使用的都是統一的介面。(AB)
4.0 日曆事件UI _EventKitUI.framework
_
為ViewController提供標準的系統日曆介面,來顯示和修改日曆事件。在EventKit庫裡,這個庫構建在關聯資料之上。(EK)
3.0 遊戲 _GameKit.framework
_ (Guide)
支援Game Center,使用者可以使用它來分享遊戲關聯的資料。(GK)
允許使用者建立網路帳號,使用者登入Game Center和與匿名使用者交流。使用者可以為自己的朋友設定標籤。 熱門排行榜,支援上傳遊戲分數上Game Center,和檢索分數。你可以使用這個特性讓使用者把自己最好的成績告訴給他們的朋友。 成就,允許應用記錄使用者在遊戲裡面產生的成就。 挑戰,使用者可以在應用裡發起挑戰給朋友,來獲得一個成績或者成就。 回合制遊戲,建立一個持久的比賽。比賽的狀態會儲存在iCloud
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)
基本應用管理和基礎控制項,包含應用的主線程 使用者的介面管理,包含支援故事板(storyboards)和可顯化管理(nib)檔案 一個Viewcontroller模型來壓縮裝在你的使用者介面內容 對象在標準的系統介面和控制下表現出來 支援管理touch-和motion-事件 支援文檔模式包含 iCloud integration(Document-Based App Programming Guide for iOS) 圖形和介面支援,包含支援額外顯示(View Programming Guide for iOS) 支援多任務(Multitasking) 支援繪畫(Drawing and Printing Guide for iOS) 支援定製標準的UIKitking控制項 支援文字和網路內容 剪下,複製和粘貼 支援使用者介面內容動畫效果 在系統下,通過URL schemes和庫介面,整合其他應用 支援禁用使用者的可訪問性 支援蘋果訊息推送服務(Apple Push Notification Service) 本地訊息的時間安排和傳遞(Local Notifications) PDF建立 支援使用類似系統自訂的介面鍵盤 支援建立文本視圖來和系統鍵盤互動 支援通過郵箱,twitter,facebook或者其他伺服器分享內容
除了支援建設應用的基本代碼以外,UIKit同時支援一些裝置的特殊特性。 內建相機 使用者的圖片庫 裝置名稱和模型資訊 電源狀態資訊 距離感應器資訊 通過耳機連結的遠距離控制資訊