Xcode 4開(kāi)發(fā)第一個(gè)iPhone程序 圖文實(shí)例(下)
Xcode 4開(kāi)發(fā)第一個(gè)iPhone程序 圖文實(shí)例(下)是 本文介紹的內(nèi)容,接著Xcode 4開(kāi)發(fā)第一個(gè)iPhone程序 圖文實(shí)例(上)繼續(xù)介紹。
項(xiàng)目開(kāi)發(fā)
熟悉Xcode 4
經(jīng)過(guò)前期的準(zhǔn)備工作后,現(xiàn)在可以開(kāi)始基于Xcode4進(jìn)行實(shí)際的項(xiàng)目開(kāi)發(fā)。對(duì)于Xcode4,在iOS Dev Center中,找到“Xcode 4 User Guide”,這是一個(gè)專門針對(duì)Xcode 4的說(shuō)明和使用指南,非常詳細(xì)。

在Xcode 4中,整合了原來(lái)專門用來(lái)編輯Mac或iOS項(xiàng)目界面的Interface Builder軟件,“Xcode 4 User Guide”中專門有一章“Designing User Interfaces in Xcode”來(lái)講述如何在Xcode 4中編輯界面。

創(chuàng)建新項(xiàng)目
啟動(dòng)Xcode4后,首先會(huì)有一個(gè)歡迎窗口,通過(guò)它,點(diǎn)擊“Create a new Xcode project”,可以直接開(kāi)始創(chuàng)建項(xiàng)目

當(dāng)然也可以通過(guò)菜單或者快捷方式來(lái)開(kāi)始創(chuàng)建新項(xiàng)目

選擇新項(xiàng)目模板
為方便生成項(xiàng)目,Xcode4默認(rèn)提供了幾種項(xiàng)目模板:
Navigation-based Application: 該模板適用與需要界面導(dǎo)航的應(yīng)用,基于該模板生成的應(yīng)用程序,帶一個(gè)導(dǎo)航,顯示一個(gè)列表項(xiàng)
OpenGL ES Application: 該模板適用于基于OpenGL ES的應(yīng)用程序,例如游戲類程序?;谠撃0迳傻膽?yīng)用程序,帶一個(gè)用來(lái)輸出OpenGL ES場(chǎng)景的視圖和一個(gè)支持動(dòng)畫的視圖
Splite View-based Application: 該模板適用于需要用到左右分欄視圖的iPad程序,基于該模板生成的應(yīng)用程序,提供了一個(gè)左右分欄的界面控件
Tab Bar Application: 該模板適用于適用采用標(biāo)簽頁(yè)的應(yīng)用程序,基于該模板生成的應(yīng)用程序,默認(rèn)帶有標(biāo)簽頁(yè)
Utility Application: 該模板適用與有一個(gè)主界面和一個(gè)信息頁(yè)的應(yīng)用,基于該模板生成的應(yīng)用程序,主界面上有一個(gè)信息按鈕,點(diǎn)擊后,有一個(gè)翻轉(zhuǎn)動(dòng)畫,切換到另一個(gè)信息界面
View-based Application: 該模板適用于單一界面的應(yīng)用,基于該模板生成的應(yīng)用程序,只有一個(gè)空白界面視圖
Window-based Application: 該模板適用于空白的應(yīng)用程序,基于該模板生成的應(yīng)用程序,只有一個(gè)窗體,沒(méi)有任何視圖,需要手動(dòng)添加

對(duì)于我們的Hello World項(xiàng)目來(lái)說(shuō),最適合的項(xiàng)目模板是“View-based Application”,我們只要基于它創(chuàng)建一個(gè)單一帶有空白視圖的應(yīng)用,然后再將UILabel拖到上面就可以實(shí)現(xiàn)基本功能。
項(xiàng)目基本選項(xiàng)
點(diǎn)擊下一步,進(jìn)入“Choose options for your new project”界面,在這里,可以選擇設(shè)置項(xiàng)目的基本選項(xiàng),其中:
Product Name: 指產(chǎn)品名稱,在這里項(xiàng)目中,我們直接命名為“Hello World”
Company Identifier: 公司標(biāo)識(shí)符,一般命名規(guī)則為 “com.公司名”
Bundle Identifier: 指包標(biāo)識(shí)符,用于唯一標(biāo)識(shí)應(yīng)用程序,默認(rèn)會(huì)根據(jù)公司標(biāo)識(shí)符和產(chǎn)品名來(lái)組合生成
Device Family: 指該應(yīng)用支持的設(shè)備類型,共三個(gè)選項(xiàng):iPhone、iPad、Universal(即iPhone、iPad通用)
Include Unite Tests: 是否包含單元測(cè)試代碼模板,如果勾選,Xcode會(huì)幫助生成單元測(cè)試代碼模板

選擇存儲(chǔ)路徑
點(diǎn)擊Next按鈕后,進(jìn)入選擇文件存儲(chǔ)路徑界面,在這里,可以選擇要存儲(chǔ)項(xiàng)目的目錄。
項(xiàng)目創(chuàng)建
完成點(diǎn)擊“Create”按鈕,項(xiàng)目創(chuàng)建完成,彈出項(xiàng)目窗口。

試運(yùn)行項(xiàng)目
經(jīng)過(guò)上面的步驟,我們已經(jīng)基于模板創(chuàng)建了一個(gè)項(xiàng)目,在開(kāi)始開(kāi)發(fā)前,我們可以嘗試先試運(yùn)行一下項(xiàng)目,看看效果。點(diǎn)擊Xcode左上角的“Run”按鈕,Xcode即開(kāi)始對(duì)項(xiàng)目進(jìn)行編譯,編譯完成后,會(huì)彈出iPhone模擬器,在模擬器中運(yùn)行項(xiàng)目,當(dāng)然我們的項(xiàng)目現(xiàn)在運(yùn)行起來(lái)還只能看到一個(gè)空白的界面。

點(diǎn)Xcode左上角的“Stop”按鈕,停止運(yùn)行項(xiàng)目。
編輯界面文件
一般創(chuàng)建一個(gè)新項(xiàng)目,在項(xiàng)目中會(huì)包含一個(gè)或多個(gè)界面文件,這些界面文件一般稱之為“nib文件”,擴(kuò)展名為nib或xib?;蛘咄ㄟ^(guò)向?qū)?chuàng)建一個(gè)新的View Controller的時(shí)候,Xcode會(huì)包含一個(gè)對(duì)應(yīng)的nib文件,一個(gè)頭文件和一個(gè)實(shí)現(xiàn)文件。在我們剛剛以View-based Application為模板創(chuàng)建的Hello World項(xiàng)目中,“Hello_WorldViewController.xib”就是主界面的nib文件。
在Xcode左側(cè)選中“Hello_WorldViewController.xib”文件,并點(diǎn)擊工具欄的“Hide or show the Navigator”和“Hide or show the Utilities ”按鈕,隱藏左側(cè)Navigator區(qū)域,顯示Utility區(qū)域,這樣我們就可以開(kāi)始在Xcode 4中來(lái)編輯界面。

添加Label到界面中
從對(duì)象庫(kù)中,找到我們所需要的Label控件對(duì)象,拖動(dòng)到主界面中,即完成Label控件的添加

設(shè)置Label控件屬性
選中新添加的Label控件,點(diǎn)擊Inspector selector bar區(qū)域的“Show the Attributes inspector”按鈕,切換到屬性編輯界面,分別設(shè)置以下屬性:
Text: 輸入“Hello World”
Alignment: 選擇居中對(duì)齊
Font: 選擇“Helvetical Bold 26.0”
Text Color: 選擇紅色
Shadow: 選擇黑色(Black Color)
Shadow Offset: Horizontal和Vertical的值分別輸入1

設(shè)置Label控件的大小和位置
在上面的步驟中設(shè)置好Label的相關(guān)屬性后,發(fā)現(xiàn)文字特別小,而且顯示不完整,并非我們所選擇的字體大小,這是由于UILabel有一個(gè)屬性“adjustsFontSizeToFitWidth”,默認(rèn)值是“YES”,如果這個(gè)屬性的值為YES,并且Label的numberOfLines屬性值是1,它會(huì)根據(jù)Label的寬度來(lái)自動(dòng)調(diào)整字體大小,通過(guò)Xcode新添加的Label,默認(rèn)寬度比較小,按照正常的26磅大小的字體,無(wú)法完整顯示,所以就字體大小就被自動(dòng)調(diào)整了,導(dǎo)致顯示的和我們期望的不一樣。解決這個(gè)問(wèn)題很簡(jiǎn)單,就是我們重新設(shè)置一下Label的寬度,以讓其可以完整顯示文字。
選中新添加的Label控件,點(diǎn)擊Inspector selector bar區(qū)域的“Show the Size inspector”按鈕,切換到尺寸和位置設(shè)置界面,對(duì)寬度進(jìn)行調(diào)整,這里我們給Label設(shè)置一個(gè)足夠的寬度和高度:200x40,以保證字體不會(huì)被縮小。
接下來(lái),就是要調(diào)整Label的位置,讓它顯示在屏幕的正中間。在Xcode中,用鼠標(biāo)拖動(dòng)Label,拖動(dòng)過(guò)程中Xcode有輔助線來(lái)幫助定位,很容易就可以找到正中心的位置。當(dāng)然也可以通過(guò)簡(jiǎn)單的計(jì)算得到Label如果要顯示在正中心,坐標(biāo)應(yīng)該為:x = (屏幕寬度 - Label寬度) / 2 = (320 - 200) / 2 = 60; y = (屏幕高度 - 狀態(tài)欄高度 - Label高度) / 2 = (480 - 20 - 40) / 2 = 210;

對(duì)修改過(guò)的xib文件保存,運(yùn)行項(xiàng)目,看看效果

就這樣,我們已經(jīng)完成了第一步:在屏幕上顯示文字,設(shè)置字體和字體大小,讓文字顯示在屏幕正中心。下一步,我們要讓它支持旋轉(zhuǎn),并且旋轉(zhuǎn)后,文字還是顯示在屏幕正中。
支持設(shè)備旋轉(zhuǎn)
前面我們已經(jīng)學(xué)習(xí)了解過(guò),要支持設(shè)備宣傳,要做如下工作:
重寫對(duì)應(yīng)的View Controller的“shouldAutorotateToInterfaceOrientation:”方法,在方法中申明支持的方向。也就是首先要重寫“Hello_WorldViewController.m”中的“shouldAutorotateToInterfaceOrientation:”方法
配置對(duì)應(yīng)的View Controller中的View的autoresizingMask屬性,以適應(yīng)因?yàn)榻缑嫘D(zhuǎn)導(dǎo)致的布局變化。也就是要設(shè)置好Label控件的autoresizingMask屬性。
還是在界面文件中,選中Label,在尺寸和位置設(shè)置界面,通過(guò)點(diǎn)擊Autosizing中的紅色線條,設(shè)置Label對(duì)上下左右四個(gè)方向以及寬度和高度都自動(dòng)調(diào)整,這樣就可以保證在設(shè)備旋轉(zhuǎn)后,界面的寬度和高度發(fā)生改變后,控件對(duì)上下左右四個(gè)方向的位置以及長(zhǎng)度和寬度也會(huì)隨著一起調(diào)整,由于已經(jīng)設(shè)置了文字在Label內(nèi)部是居中對(duì)齊的,就可以保證文字顯示在界面居中的位置。

點(diǎn)擊工具欄的“Hide or show the Navigator”和“Hide or show the Utilities ”按鈕,顯示左側(cè)Navigator區(qū)域,隱藏Utility區(qū)域,在左側(cè)Navigator區(qū)域,選中“Hello_WorldViewController.m”文件,找到“shouldAutorotateToInterfaceOrientation:”方法,對(duì)其進(jìn)行重寫,重寫后代碼如下
- - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
- {
- // Return YES for supported orientations
- return YES;
- }
對(duì)所做的修改進(jìn)行保存,然后運(yùn)行項(xiàng)目,彈出模擬器,通過(guò)調(diào)用模擬器的設(shè)備旋轉(zhuǎn)菜單,讓iPhone模擬器變成橫屏,你將看到文字會(huì)自動(dòng)調(diào)整位置,還是顯示在屏幕正中的位置。

至此,我們就實(shí)現(xiàn)了項(xiàng)目的全部需求。
小結(jié):Xcode 4開(kāi)發(fā)第一個(gè)iPhone程序 圖文實(shí)例(下)的內(nèi)容介紹完了,通過(guò)Hello World這個(gè)簡(jiǎn)單項(xiàng)目,我們學(xué)習(xí)了如何基于Xcode 4分析和開(kāi)發(fā)iOS項(xiàng)目,學(xué)習(xí)了如何通過(guò)iOS Dev Center獲取需要的資料。最后希望本文對(duì)你有所幫助!
源碼下載:https://github.com/JimLiu/The-practice-of-iPhone-application-development/tree/master/Hello%20World

























