一iOS概述 UI設計的條件設置 iOS系統架構層次 二程序的執行順序
iOS(最初,蘋果公司並沒有給隨iPhone發行的iOS一個獨立的稱謂,直到2008年3月6日才給它取名為iPhone OS,並於2010年6月改名為現在的名字iOS)是由蘋果公司為移動設備所開發的操作系統,支持的設備包括iPhone、iPod touch、iPad及Apple TV等。與Android及Windows Phone不同,iOS不支持非蘋果的硬件設備。2007年1月9日蘋果在Macworld大會中發布了iOS,並於同年6月29日發布了iOS的第一個版本。目前,iOS的最新版本為8.4(於2015年6月30日發布)。
盡管Apple為我們提供了諸多控件讓我們來布局應用,但並不是沒有任何原則,我們需要合理安排控件,做到用戶體驗最佳,以下是UI設計的條件限制:
顯示面積。盡可能少而緊湊的界面元素、足夠大的交互控件。 文件大小。有限的存儲空間,下載的時間以及流量費用,資源加載速度。 內存空間。程序運行空間小,內存管理優化,避免過高質量的圖片和音頻。 程序運行限制。一次只有一個前台程序,程序退出時間不得超過5秒。 數據訪問。不能使用別的APP中的靜態類庫,不能訪問沙盒以外的任何文件,也不能把沙盒文件共享出去。可以通過特定的API訪問一些系統資源,如圖片庫、地址簿等,在有網絡鏈接時,可以訪問網絡資源。 能量消耗。CPU負載、發熱、電池消耗快、算法優化。 用戶使用習慣。快速啟動、短暫使用,隨時可能退出,避免多余的幫助,自動保存。iOS基於Mac OS X同樣的內核,iOS APP由如下圖所示的OS技術層次支撐起來。
1. Core OS 和 Core Services 層提供了底層支持,包括文件訪問、網絡協議、低級數據類型等;它們是C基礎的接口,包括Core Foundation,CFNetwork,SQLite等API。
2. Media層提供了一些基本的繪圖、聲音和視頻技術的支持,包括基於C的OpenGL ES,Quartz,Core Audio以及基於Objective-C的Core Animation等。
3. Cocoa Touch層包括了大部分使用Objective-C的API主要由Foundation和UIKit兩個框架構成,Foundation提供了面向對象方式的文件訪問、網絡操作、數據、集合類型等。
在進行APP開發時,應當從上至下地使用這些技術層次,Cocoa Touch層為你提供了基本的系統行為支持,而且將你的工作量降到最低,當你想要實現更為復雜的行為和界面時,才考慮向下層探尋技術支持。
1.main.m是程序的?口。任何一個程序,?論是基於Mac OS X還是iOS,程序都是從main.m文件的main函數開始執?的。main函數只做三件事:創建一個自動釋放池,調用UIApplicationMain函數,以及使用自動釋放池。
int main(int argc, char * argv[]) {
@autoreleasepool {
// 執行UIApplicationMain函數時做了跳轉,轉到了AppDelete中
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
2.UIApplicationMain()創建應用程序對象,並且為此對象指定委托,監測程序的執行,同時開啟事件循環,處理程序接收到的事件。
3.UIApplicationDelegate方法的執行。應?程序代理,主要檢測應用程序的狀態並做出相應的處理。應用程序的狀態有很多,比如:程序啟動、進入活躍狀態、進到後台、內存警告、收到遠程消息等。任何接受了UIApplicationDelegate協議的對象都可以成為應用程序代理。一旦應?程序的某種狀態觸發,就會執行相應的代理?法。UIApplicationDelegate是一個objective-C的協議。?面聲明了很多方法,這些方法都與應用程序運行狀態有關,它們由應用程序代理實現。UIApplication對象負責調?。
4.加載window。UIWindow作為應用程序的窗口,在應用程序啟動的時候就要加載。各種UI界面都是借助window來呈現的。UIWindow在創建的時候,應該和屏幕?樣大。通過[UIScreen mainScreen].bounds可以獲得屏幕?小。[self.window makeKeyAndVisible]; //讓window變為可視狀態,即顯?window
5.指定根視圖控制器。