本教程描述了什么是應用程序、創(chuàng)建簡單用戶界面的過程,以及如何添加自定行為,將界面轉變成可運行的應用程序。
遵循本教程,可了解 iOS 應用程序開發(fā)的基礎內容,包括:
完成教程后,您會得到類似于下圖的應用程序:
開發(fā) iPad 應用程序的工具和技術與 iPhone 完全相同。為簡單起見,本教程只針對 iPhone。教程使用 Xcode 5.0 和 iOS SDK 7.0。
要開發(fā)應用程序,首先請創(chuàng)建一個新的 Xcode 項目。
Xcode 隨附了幾個內建應用程序模板,可用于開發(fā)常見的 iOS 應用程序,如游戲、基于標簽瀏覽的應用程序和基于表格視圖的應用程序。這些模板大都預先配置了界面和源代碼文件,可作為您進行開發(fā)工作的起點。本教程會從最基礎的模板開始:Empty Application。
使用 Empty Application 模板有助于理解 iOS 應用程序的基本結構,以及如何將內容呈現(xiàn)給用戶。了解完所有組件的工作方式后,您可以將其他模板用在自己的應用程序上,來節(jié)省一些配置時間。
1.從 /Applications 目錄打開 Xcode。
Xcode 歡迎窗口會出現(xiàn)。
如果出現(xiàn)的是項目窗口,而不是歡迎窗口,請不要著急;這說明您可能曾在 Xcode 中創(chuàng)建或打開過項目。您只需在接下來的步驟中,使用菜單項來創(chuàng)建項目。
2.在歡迎窗口中,點按“Create a new Xcode project”(或選取“File”>“New”>“Project”)。Xcode 將打開一個新窗口并顯示對話框,讓您從中選取一個模板。
3.在對話框左邊的 iOS 部分,選擇“Application”。
4.在對話框的主區(qū)域中,點按“Empty Application”,然后點按“Next”。
5.在出現(xiàn)的對話框中,給應用程序命名并選取應用程序的其他選項。
請使用以下值:
Xcode 會使用類前綴名稱來命名為您創(chuàng)建的類。Objective-C 類的名稱必須是代碼中唯一的詞,并區(qū)別于任何可能在框架或捆綁包中使用的詞。為使類名稱保持唯一性,通常要為所有類添加前綴。Apple 已經為框架類保留了兩個字母組成的前綴,所以請使用三個字母或更長的前綴。
6.從“Devices”彈出式菜單中選取“iPhone”。
前文中已經提到,使用 iPhone 界面創(chuàng)建應用程序是最簡單的入門方式。為 iPad 創(chuàng)建應用程序或創(chuàng)建通用應用程序的技術與此相同。
7.點按“Next”。
8.在出現(xiàn)的對話框中,選取項目的存放位置,然后點按“Create”。
Xcode 會在工作區(qū)窗口中打開新項目,窗口的外觀類似:
Xcode 包括了您創(chuàng)建應用程序時所需的一切。它不僅整理了創(chuàng)建應用程序時所需的文件,還提供了代碼和界面元素編輯器,可讓您構建和運行應用程序,并擁有強大的集成調試程序。
請花幾分鐘時間來熟悉 Xcode 工作區(qū)窗口。在接下來的整個教程中,您將會用到下面窗口中標識出的控制。點按不同的按鈕,體驗一下它們的工作方式。如果要了解有關界面某個部分的更多信息,請閱讀其幫助文章。方法是按住 Control 鍵點按 Xcode 中的區(qū)域,然后從出現(xiàn)的快捷菜單中選取文章。
由于項目是基于 Xcode 模板創(chuàng)建的,因此基本的應用程序環(huán)境已經自動為您設置好了。即使沒有編寫任何代碼,也可以構建和運行 Empty Application 模板,而無需進行任何額外的配置。
構建和運行您的應用程序,可以使用 Xcode 自帶的 iOS Simulator 應用程序。顧名思義,iOS Simulator 可模擬在 iOS 設備上運行應用程序,讓您初步了解它的外觀和行為。
它可模擬多種不同類型的硬件,包括屏幕大小不同的 iPad、iPhone 等等。因此,您可以模擬在任何一款開發(fā)目標設備上運行應用程序。在本教程中,我們選擇使用“iPhone Retina (4-inch)”。
1.從 Xcode 工具欄的“Scheme”彈出式菜單中選取“iPhone Retina (4-inch)”。
繼續(xù)瀏覽菜單,查看 iOS Simulator 中的其他硬件選項。
2.點按 Xcode 工具欄左上角的“Run”按鈕。
或者,可以選取“Product”>“Run”(或按下 Command-R)。
如果是首次運行應用程序,Xcode 會詢問您是否要在 Mac 上啟用開發(fā)者模式。開發(fā)者模式可讓 Xcode 訪問特定的調試功能,無需每次都輸入密碼。請決定是否要啟用開發(fā)者模式,然后按照提示操作。如果選取不啟用,可能稍后會要求您輸入密碼。本教程假定已啟用了開發(fā)者模式。
3.構建過程完成后,請看 Xcode 工具欄。
Xcode 會在工具欄中間的活動顯示窗口中顯示有關構建過程的消息。
iOS Simulator 會按照您的指定,以 iPhone 模式打開。在模擬的 iPhone 屏幕上,iOS Simulator 會打開您的應用程序。(如果此時在 Xcode 調試程序中看到一則信息,請不必擔心,稍后的教程中會有解釋。)
一如其名,Empty Application 模板并未包括過多的代碼,僅會顯示一個白色的屏幕。其他模板會有更多復雜的行為,因此在擴展模板制作自己的應用程序之前,先要弄清楚模板的用處,這一點很重要。而要做到這一點,一個很好的方式,就是先不做任何修改,直接運行模板。
探索完應用程序后,請選取“iOS Simulator”>“Quit iOS Simulator”(或按下 Command-Q)來退出 iOS Simulator。
Empty Application 模板附帶了少量現(xiàn)成的源代碼,用于設置應用程序環(huán)境。大多數(shù)工作都由 UIApplicationMain 函數(shù)來完成,它在項目的 main.m 源文件中會被自動調用。UIApplicationMain 函數(shù)會創(chuàng)建一個應用程序對象來設置應用程序基礎結構,以配合 iOS 系統(tǒng)運作。包括創(chuàng)建一個運行循環(huán),將輸入事件傳遞給應用程序。
您不需要直接處理 main.m 源文件,但是了解一下它的工作方式也是頗有趣味的。
1.請確定項目導航器已在導航器區(qū)域中打開。
項目導航器會顯示項目中的所有文件。如果項目導航器未打開,請點按導航器選擇欄最左邊的按鈕。
2.點按項目導航器中“Supporting Files”文件夾旁邊的顯示三角形,打開文件夾。
3.選擇 main.m。
Xcode 會在窗口的主編輯器區(qū)域打開源文件,外觀類似于:
如果連按該文件,它會在單獨的窗口中打開。您可以根據(jù)需要進行選擇:點按文件一次,將其在主項目窗口中打開;或是連按文件,將其在單獨的窗口中打開。
main 中的 main.m 函數(shù)會調用自動釋放池 (autorelease pool) 中的 UIApplicationMain 函數(shù)。
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([XYZAppDelegate class]));
}
@autoreleasepool 語句支持應用程序的內存管理。自動引用計數(shù) (Automatic Reference Counting, ARC) 利用編譯器追蹤對象的所有者,使內存管理變得簡單;@autoreleasepool 是內存管理基礎結構的一部分。
調用 UIApplicationMain 會創(chuàng)建應用程序的兩個重要初始組件:
UIApplication 類的實例, 稱為應用程序對象。
應用程序對象可管理應用程序事件循環(huán),并協(xié)調其他高級的應用程序行為。定義在 UIKit 框架中的這個類,不要求您編寫任何額外的代碼,就可以達成其任務。
XYZAppDelegate 類的實例,稱為應用程序委托。
Xcode 創(chuàng)建此類,作為設置 Empty Application 模板的一部分。應用程序委托會創(chuàng)建一個呈現(xiàn)應用程序內容的窗口,并為響應應用程序內的狀態(tài)轉換提供位置。這個窗口是您編寫自定應用程序級代碼的地方。與所有的類一樣,XYZAppDelegate 類在應用程序的兩個源代碼文件中被定義:接口文件 XYZAppDelegate.h;實現(xiàn)文件 XYZAppDelegate.m。
以下是應用程序對象和應用程序委托互動的方式。應用程序啟動時,應用程序對象會調用應用程序委托上已定義的方法,使自定代碼有機會執(zhí)行其操作,這正是運行應用程序的有趣之處。為了深入理解應用程序委托的角色,請從接口文件開始查看其源代碼。如果要查看應用程序委托的接口文件,請在項目導航器中選擇 XYZAppDelegate.h。應用程序委托的界面包含了單一屬性:window。有了這個屬性,應用程序委托才會跟蹤能呈現(xiàn)所有應用程序內容的窗口。
下一步,請查看應用程序委托的實現(xiàn)文件。請在項目導航器中選擇 XYZAppDelegate.m。應用程序委托的實現(xiàn)包含了一些重要方法的“骨架”。這些預定義的方法可讓應用程序對象與應用程序委托進行溝通。在一個重要的運行時事件(例如,應用程序啟動、低內存警告和應用程序終止)中,應用程序對象會調用應用程序委托中相應的方法,使其有機會進行適當?shù)捻憫?。您無需執(zhí)行任何特殊的操作,來確定這些方法是否會在正確的時間被調用,因為應用程序對象會幫您處理這部分的工作。
這些自動實現(xiàn)的方法都具有一個默認的行為。就算將骨架實現(xiàn)留空,或將它從 XYZAppDelegate.m 文件中刪除,這些行為在方法被調用時,都會默認執(zhí)行。您可以使用這些骨架來放置附加的自定代碼,以在方法被調用時執(zhí)行。例如,XYZAppDelegate.m 文件中的第一個方法包含了幾行代碼,用于設置應用程序的窗口,并讓應用程序首次運行時顯示白色的背景顏色。在本教程中,您不會使用到任何自定應用程序委托代碼,因此可以移除這段代碼。
請在 XYZAppDelegate.m 中查找 application:didFinishLaunchingWithOptions: 方法。它是文件中的第一個方法。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
return YES;
}
Xcode 會自動存儲更改。它會時刻跟蹤并存儲您的所有操作。(您可以通過選取“Edit”>“Undo Typing”來撤銷所作的更改。)
現(xiàn)在,您應該已經準備好創(chuàng)建應用程序的串聯(lián)圖了。串聯(lián)圖能直觀展示應用程序的用戶界面、顯示內容屏幕以及它們之間的轉換。您可以使用串聯(lián)圖對驅動應用程序的流程或構思進行布局。
要了解串聯(lián)圖融入應用程序的方法,在本教程中您可以手動創(chuàng)建一個,然后將其添加到應用程序內。與開始使用的 Empty Application 模板不同,其他 Xcode 模板包含了預配置的串聯(lián)圖,提供了視圖、視圖控制器和相關的源文件,用于設置該類型的應用程序的基本架構。手動配置完串聯(lián)圖后,您將會看到各個部分是如何配合工作的。然后,您就可以使用預配置有串聯(lián)圖的項目模板,開始應用程序開發(fā)了,這會節(jié)省不少時間。
這時,一個新的串聯(lián)圖文件將創(chuàng)建完成,并被添加到項目中。您可以在這個文件中工作,對應用程序的內容進行布局。
現(xiàn)在,需要讓 Xcode 知道您想將此串聯(lián)圖用作應用程序中的界面。開始時,應用程序對象會檢查該應用程序是否配置了主界面。如果已配置,應用程序對象會在應用程序啟動時載入已定義的串聯(lián)圖。
1.在項目導航器中,選擇您的項目。
在工作區(qū)窗口的編輯器區(qū)域,Xcode 會顯示項目編輯器,可讓您查看和編輯與應用程序構建有關的細節(jié)。
2.在“Targets”的下方,選擇“ToDoList”。
如果“Project”和“Targets”列表未顯示在項目編輯器中,請點按編輯器面板左上角的顯示三角形。
3.選擇“General”標簽。
4.在“Deployment Info”的下方,找到“Main Interface”選項。
5.選擇您的串聯(lián)圖:Main.storyboard。
現(xiàn)在,串聯(lián)圖已經創(chuàng)建完成,接下來讓我們開始添加應用程序的內容吧。Xcode 提供了對象庫,您可以將庫中的對象添加到串聯(lián)圖文件。其中的一些對象屬于視圖中的用戶界面元素,例如按鈕和文本欄。其他的對象則定義了應用程序的行為,但它們不會顯示在屏幕上,如視圖控制器和手勢識別器。
首先,請將視圖控制器添加到串聯(lián)圖中。視圖控制器管理了相應的視圖及其分視圖。在下一章,“App Development Process”中,您將會了解到有關視圖角色和視圖控制器的更多信息。
1.在項目導航器中,選擇 Main.storyboard。
Xcode 會在編輯器區(qū)域的 Interface Builder(其可視化界面編輯器)中打開串聯(lián)圖。由于串聯(lián)圖是空的,因此您看到的是空白畫布。畫布可用來添加和排列用戶界面的元素。
2.打開對象庫。
對象庫出現(xiàn)在實用工具區(qū)域的底部。如果看不到對象庫,您可以點按其按鈕,即庫選擇欄中左起第三個按鈕。(如果看不到實用工具區(qū)域,可以選取“View”>“Utilities”>“Show Utilities”來顯示。)
列表顯示每個對象的名稱、描述和可視化表示。
3.將“View Controller”對象從列表拖到畫布中。
如果在對象庫中找不到標題為“View Controller”的對象,請在列表下方的文本欄中鍵入內容來過濾對象列表。鍵入 View Controller,那么過濾后的列表中就只會顯示視圖控制器對象。
現(xiàn)在,應用程序中的串聯(lián)圖包含了一個場景。畫布上指向場景左側的箭頭是“initial scene indicator”(初始場景指示器),它表示此場景是應用程序啟動時首先載入的場景。現(xiàn)在,您在畫布上看到的場景包含了單個視圖,由視圖控制器管理。雖然是在 iOS Simulator 中運行應用程序,但實際上這也是您將在設備屏幕上看到的視圖。在 iOS Simulator 上運行應用程序有助于驗證所有配置正確與否。執(zhí)行該操作前,請在場景中添加一些可以在應用程序運行時看見的內容。
1.在對象庫中,找到“Label”對象。
如果曾在過濾文本欄中輸入過內容,那么需要先清除原有內容,才能看到“Label”對象。您也可以在過濾欄中鍵入“Label”來快速查找“Label”對象。
2.將“Label”對象從列表拖到場景中。
3.將標簽拖到場景的中央,直到出現(xiàn)水平和垂直參考線。
看到以下圖標時,停止拖移標簽:
參考線表示目前標簽已水平和垂直居中。(只有在參考線旁拖移對象或調整其大小時,參考線才可見;因此當您松開標簽時,參考線會消失。)
4.連按標簽的文本,選中并進行編輯。
5.鍵入“Hello, World!”并按下 Return 鍵。
如有需要,請將標簽重新居中。
最好在 iOS Simulator 中運行應用程序進行定期檢查,看看是否一切都如預期般正常。此時,當應用程序啟動時,應會載入您在主串聯(lián)圖中創(chuàng)建的場景。點按 Xcode 中的“Run”按鈕。您看到的應該大致是這樣的:
如果看不到添加的標簽,請確定所創(chuàng)建的串聯(lián)圖已配置為應用程序的主界面,并確定在應用程序委托中用于創(chuàng)建空白色窗口的代碼已移除。如有需要,請返回到前面,并重復相關章節(jié)中的步驟。
借此機會,您可以試驗一下界面可添加的內容。通過更改以下設置來探索 Interface Builder:
現(xiàn)在您已經知道如何在場景中添加內容,接下來讓我們開始構建場景的基本界面,將新項目添加到待辦事項列表中。
將項目添加到待辦事項列表需要一則信息:項目名稱。您可以從文本欄中獲得此信息。文本欄是界面元素,可讓用戶使用鍵盤輸入單行文本。但首先,您需要移除前面所添加的標簽。
1.點按標簽進行選擇。
2.按下 Delete 鍵。
該標簽會從場景中移除。如果操作與期望不符,可以選取“Edit”>“Undo Delete Label”。(每個編輯器都有可撤銷上一個操作的“Edit > Undo”命令。)
現(xiàn)在畫布又重新恢復為空白,可創(chuàng)建用于添加待辦事項的場景。
1.如有需要,請打開對象庫。
2.將“Text Field”對象從列表拖到場景中。
3.拖移文本欄,然后放置在距屏幕底部三分之二的位置。
4.如有需要,請點按文本欄來顯示調整大小控制柄。
通過拖移調整大小控制柄(顯示在元素邊框上的白色小方塊)來調整 UI 元素的大小。您可以選擇元素來顯示其調整大小控制柄。在本例中,因為您剛剛停止拖移,文本欄應該已被選定。如果文本欄外觀如下圖所示,就可以調整它的大?。环駝t請在畫布上選擇它。
5.調整文本欄的左側和右側邊緣,直到垂直參考線顯示。
當看到畫布像下圖這樣時,停止調整文本欄大?。?/p>
雖然場景中已經有了文本欄,但是尚未告知用戶應當在欄中輸入什么內容。使用文本欄的占位符文本,提示用戶輸入新待辦事項的名稱。
1.定文本欄,打開實用工具區(qū)域中的“Attributes”檢查器
選擇檢查器選擇欄中左起第四個按鈕時,“Attributes”檢查器會出現(xiàn)。它可讓您編輯串聯(lián)圖中對象的屬性。
2.在“Attributes”檢查器中,找到標有“Placeholder”的欄,然后鍵入“New to-do item”。
如果要在文本欄中顯示新的占位符文本,請按下 Return 鍵。
檢查點:在 iOS Simulator 中運行應用程序,確定一下所創(chuàng)建的場景是否令您滿意。您應該能夠在文本欄中點按,而且可以使用鍵盤輸入字符串。
現(xiàn)在,您學會了如何使用串聯(lián)圖來創(chuàng)建基本的界面。在接下來的教程中,會了解到如何給界面添加交互,以及如何編寫代碼來創(chuàng)建自定行為。教程中的各個章節(jié)介紹了一些概念,可讓您在處理自己的應用程序時學以致用。
更多建議: