低層次框架提供IOS的基本服務(wù)和技術(shù),高層次框架建立在低層次框架之上用來提供更加復(fù)雜的服務(wù)和技術(shù),較高級(jí)的框架向較低級(jí)的結(jié)構(gòu)提供面向?qū)ο蟮某橄蟆?br />
在開發(fā)應(yīng)用時(shí)應(yīng)盡可能使用較高級(jí)的框架。如果要開發(fā)的國(guó)內(nèi)在高層框架中沒有提供,你也可以使用較低層框架和技術(shù)。
Foundation和 UIKit框架是應(yīng)用編程用到的兩個(gè)主要的框架,能夠滿足大多數(shù)應(yīng)用程序的開發(fā)需求。
UIKit框架提供的類,用于創(chuàng)建基于觸摸的用戶界面。所有 iOS 應(yīng)用程序都是基于 UIKit, 沒有這個(gè)框架,就無法交付應(yīng)用程序。UIKit提供應(yīng)用程序的基礎(chǔ)架構(gòu),用于在屏幕上繪圖、處理事件,以及創(chuàng)建通用用戶界面及其中元素。UIKit還通過管理屏幕上顯示的內(nèi)容,來組織應(yīng)用程序。
Foundation框架為所有應(yīng)用程序提供基本的系統(tǒng)服務(wù)。應(yīng)用程序以及 UIKit和其他框架,都是建立在 Foundation 框架的基礎(chǔ)結(jié)構(gòu)之上。 Foundation框架提供許多基本的對(duì)象類和數(shù)據(jù)類型,使其成為應(yīng)用程序開發(fā)的基礎(chǔ)。它還制定了一些約定(如用于取消分配等任務(wù)),使代碼更加一致,可復(fù)用性更好。
CocoaTouch Layer包含創(chuàng)建ios應(yīng)用關(guān)鍵的框架。該層包含的框架定義應(yīng)用的外觀,也提供基本的應(yīng)用基礎(chǔ)和關(guān)鍵的技術(shù)支持,例如多任務(wù)、觸摸輸入、推送通知和許多其它的高級(jí)系統(tǒng)服務(wù)。在開發(fā)應(yīng)用時(shí),應(yīng)當(dāng)首先研究該層的技術(shù)和技術(shù)看是否能夠滿足需要。
Cocoa Touch Layer包含如下關(guān)鍵技術(shù)
1).AirDrop
AirDrop允許用戶與附近設(shè)備共享圖片、文檔、urls鏈接以及其它種類的數(shù)據(jù)。
2)、Text Kit
TextKit是處理文本和排版的一個(gè)全功能、高級(jí)別的類集合。使用Text Kit你能在段落、列或者頁(yè)上對(duì)帶有風(fēng)格的文本進(jìn)行布局;也能在任意區(qū)域(如圖形)周圍布局流動(dòng)的文本;還能用它來管理多種字體。
開發(fā)應(yīng)用時(shí)應(yīng)該首先考慮使用Text Kit來進(jìn)行文本呈現(xiàn),而不是Core Text。Text Kit與所有UIKit中的基于文本的控制集成允許應(yīng)用更容易地創(chuàng)建、編輯、顯示和存儲(chǔ)文本。
3)、UIKit Dynamics
UIKit dynamics用來為符合UIDynamicItem協(xié)議的UIView對(duì)象或其它對(duì)象規(guī)定動(dòng)畫行為。通過在應(yīng)用的UI中集成真實(shí)世界行為和特性進(jìn),動(dòng)畫行為為應(yīng)用提供了一種增強(qiáng)用戶體驗(yàn)的方式。
4)、Multitasking
在ios中多任務(wù)用來設(shè)計(jì)來使電池使用時(shí)間最大化。
5)、Auto Layout
自動(dòng)布局幫助你使用非常少的代碼來建立動(dòng)態(tài)接口。
使用AutoLayout定義如何在用戶接口上布局元素的規(guī)則,這些規(guī)則表達(dá)了視圖類之間的關(guān)系,如規(guī)定一個(gè)按鈕總是處于它的父窗口的左邊緣20個(gè)點(diǎn)。
在Auto Layout中使用的實(shí)體是被稱為constraints的Objective-C對(duì)象。
6)、Storyboards
串聯(lián)圖 是設(shè)計(jì)應(yīng)用用戶接口的推薦方式。串聯(lián)圖讓你在一個(gè)地方就能夠設(shè)計(jì)全部的用戶接口,方便在一個(gè)位置看到所有的視圖和視圖控制器以及理解它們是如何一起工作的。串聯(lián)圖的一個(gè)重要的部分是定義segues(segues是從一個(gè)視圖控制器到另一個(gè)的轉(zhuǎn)換)。這些轉(zhuǎn)換代表用戶接口之間的交互。你可以使用XCOE來可視的定義這些轉(zhuǎn)換或者通過編程啟動(dòng)它們。
你能使用一個(gè)單串聯(lián)圖文件來存儲(chǔ)所有的應(yīng)用視圖控制器和視圖,或者使用多個(gè)視圖串聯(lián)圖文件來組織用戶接口。
在應(yīng)用建立時(shí)間,Xcode讀取串聯(lián)圖文件的內(nèi)容并把它分成多個(gè)能獨(dú)立加載的離散的片斷,以便獲得更好的性能。UIKit框架提供了相應(yīng)的類來從程序中存取一個(gè)串聯(lián)圖的內(nèi)容。
7)、UI State Preservation
UI狀態(tài)保存能夠使應(yīng)用表現(xiàn)的一直運(yùn)行,從而為用戶提供無縫的體驗(yàn)。如果系統(tǒng)遇到內(nèi)存壓力,系統(tǒng)可能安靜地強(qiáng)制停止一個(gè)或多個(gè)后臺(tái)應(yīng)用。
當(dāng)應(yīng)用從前臺(tái)移到后臺(tái)時(shí),該服務(wù)能保存應(yīng)用的視圖和視圖控制器的狀態(tài)。在下次應(yīng)用重新啟動(dòng)時(shí),能夠使用先前保存的狀態(tài)信息來恢復(fù)視圖和視圖控制器到它們先前的配置,使應(yīng)用表現(xiàn)得好像一直在運(yùn)行。
8)、Apple Push Notification Service
蘋果的推送通知服務(wù)提供了一種提示用戶關(guān)于新信息的方式,即使應(yīng)用當(dāng)前不在激活運(yùn)行狀態(tài)。
使用該服務(wù),你能推送文本通知,在應(yīng)用圖標(biāo)上增加一個(gè)標(biāo)記或者在任意時(shí)間觸發(fā)聲音提示。
這些消息讓用戶知道他們應(yīng)該打開應(yīng)用來接收相關(guān)信息。自Ios7開始,你甚至能推送無聲的通知來讓應(yīng)用知道有了新的內(nèi)容可以下載。
為了使用IOS應(yīng)用的推送通知,用戶需要做兩部分的工作。首先應(yīng)用必須登記該通知服務(wù)以及在通知被提交時(shí)處理相關(guān)的通知數(shù)據(jù)。第二,你必須提供一個(gè)服務(wù)端的進(jìn)程來產(chǎn)生通知。
服務(wù)端的進(jìn)程可以使用你自己的本地服務(wù)器或者使用蘋果的推送通知服務(wù)。
9)、Local Notifications
本地通知作為推送通知機(jī)制的補(bǔ)充,可以給應(yīng)用提供一種不依賴外部服務(wù)器產(chǎn)生本地通知的方式。
運(yùn)行在后頭的應(yīng)用能使用本地通知作為當(dāng)重要的事件發(fā)生時(shí)引起用戶注意的一種方式。例如,運(yùn)行在后臺(tái)的導(dǎo)航應(yīng)用能使用本地通知來提示用戶什么時(shí)間該轉(zhuǎn)彎了。
應(yīng)用也能調(diào)度本地通知在將來的時(shí)間提交以及使那些通知在應(yīng)用不運(yùn)行也能被提交。
本地通知的一個(gè)優(yōu)點(diǎn)是它們與你的應(yīng)用是獨(dú)立的。在一個(gè)通知已被調(diào)度,系統(tǒng)管理它的提交。另外當(dāng)通知被提交時(shí)你的應(yīng)用甚至不必運(yùn)行。
10)、Gesture Recognizers
手勢(shì)識(shí)別用來檢測(cè)通常類型的手勢(shì)。由于手勢(shì)識(shí)別使用與系統(tǒng)檢測(cè)手勢(shì)相同的試探方法,因此手勢(shì)識(shí)別為應(yīng)用提供了一個(gè)一致的行為。為了使用它,你能在你的視圖上附加手勢(shì)識(shí)別功能和并給它提供一個(gè)在手勢(shì)出現(xiàn)時(shí)要執(zhí)行的方法。
手勢(shì)識(shí)別跟蹤原始的觸摸事件和確定它們什么時(shí)候與想要的手勢(shì)匹配。
11)、System View Controllers
許多系統(tǒng)框架為標(biāo)準(zhǔn)的系統(tǒng)接口定義了視圖控制器。只要有可能,為了呈現(xiàn)一致的用戶體驗(yàn),就應(yīng)該使用系統(tǒng)提供的視圖控制器而不是創(chuàng)建一個(gè)新的。