iOS項目——項目開發環境搭建,ios項目開發搭建
在開發項目之前,我們需要做一些準備工作,瞭解iOS擴充——Objective-C開發編程規範是進行開發的必備基礎,學習iOS學習——Xcode9上傳項目到GitHub是我們進資料列版本設定和代碼管理的選擇之一,明白iOS學習——iOS項目Project 和 Targets配置詳解則更利於我們今天對完整項目開發環境的搭建,這些內容在在之前的博文中都已經有了一些總結和步驟說明,具體詳情可以戳連結查看。
開發一個完整的App,不同於我們平時學習和練習時隨意建立一個project,然後寫我們範例程式碼就完了。要開發一個完整的App。有一定的開發流程,而且一般而言,在開發過程我們都是多人合作,每個人負責一部分功能模組的開發,最後進行合并、調試、測試、上線等流程。那麼在項目開發的最初,我們需要對我們的App的開發環境進行搭建,在一個App開發之初,環境搭建主要包括如下幾個部分。
1 修改App安裝後顯示的應用程式名稱
在我們最初建立項目的時候,App的名稱和我們的項目名預設是一樣的,一般而言,我們的項目中命名是不用中文的,所以基本上App應用程式名稱和我們的項目名稱是有區別的,因此,在項目剛開始的時候,App的名稱是需要修改確定好的。目前有三個地方可以直接修改App顯示名,這三個地方修改器中一個,另外兩個會自動修改過來,具體操作如所示。
2 設定類名的首碼
在項目開發過程中,我們一般需要對項目中所有的類加上一個首碼以區分是我們自己建立還是第三方或者系統內建的類,這個首碼是自訂的,一般設定為公司名的英文縮寫或首字母,個人開發的可以隨心設定,設定介面如所示。
這裡除了設定我們的類名首碼之外,還額外標註了另外兩項的設定方法:
- 一種是右下角的文本設定選項,在iOS擴充——Objective-C開發編程規範中我們提到過,iOS開發推薦使用空格進行縮排和分割,而不推薦使用tab進行縮排,這裡就是設定tab鍵所代表的意義,縮排4個空格。Indent表示下一行縮排的量也是4個空格。
- 另一種是Organization(組織)的設定,這個設定的效果是表明軟體的著作權所屬,在我們項目中的每個類都有一個類說明注釋,如所示,這裡的組織的設定就表明了程式的Copyright著作權所屬。一般而言,這裡是設定為公司名稱,可以是中文,當然也可以自訂,這個預設是自己的電腦的name。
3 調整App方向
一般而言,我們的應用軟體的方向都是豎屏正向的(遊戲除外,一般的遊戲都是橫屏的) ,所以我們在進行項目開發之前可以先把裝置類型、螢幕的方向等確定下來,這也方便我們進行應用表徵圖和啟動圖片的剪下和設定,螢幕方向的設定介面如所示。
這一部分的內容有一些在iOS學習——iOS項目Project 和 Targets配置詳解中有講到,主要是通過設定target的部署屬性來設定該App安裝到手機上一些狀態。通過我們可以看到:
- 裝置方向有四個方向可選,一般而言,我們選擇豎屏就可以了,特殊功能App除外。
- 我們還可以設定我們的裝置類型是iPhone還是iPad還是兩者都兼顧Universal。
- 狀態列的風格style,有兩種風格可選,自己根據情況選擇。當然,是否需要隱藏狀態列,我們也可以在開發過程根據需要通過代碼的方式進行設定。
- 可以根據需要設定是否隱藏狀態列,是否需要全屏等設定。
例如,在開發類似王者榮耀的遊戲時這裡的幾個選項應該是裝置類型選擇Universal,裝置方向是左橫屏 + 右橫屏,勾選隱藏狀態列,同事也勾選需要全屏。
4 設定應用表徵圖和啟動圖片
如何設定y8ingyong表徵圖和啟動圖片我們在iOS學習——iOS項目Project 和 Targets配置詳解中已經詳細進行講過了。設定介面如所示,這一塊主要設定應用表徵圖和啟動介面,其中啟動介面有兩種設定方法:通過設定啟動圖片或者通過設定啟動介面檔案來啟動,啟動表徵圖和啟動介面對不同的機型的裝置所需要的尺寸是不同的,具體應用表徵圖和啟動頁面的大小尺寸介紹見官網:Human Interface Guidelines。
App icon Source(應用表徵圖):對應著檔案資源Assets.xcassets目錄中的AppIcon中的表徵圖,如所示。最右邊的面板可以選擇添加哪一種或哪幾種裝置上的表徵圖,每一個型號的裝置上的表徵圖的尺寸是不同的,具體需要多大尺寸的表徵圖可參見Human Interface Guidelines。在中間有一個個的小格子,我們將所有切好的表徵圖直接拖過來,他們會自動找到自己應該放在的格子裡。這些小格子主要分為四類:
- Notification:通知時的表徵圖,類似有應用相關的推送訊息時,有時候需要顯示本應用的表徵圖則會顯示這個尺寸的
- Spotlight:搜尋小表徵圖,當在Spotlight中輸入應用程式名稱,搜尋結果中出現該應用時的表徵圖就是這個尺寸的,還有設定裡的表徵圖也是這個尺寸的。
- App:這就是正常的App表徵圖,安裝好之後在案頭顯示的,或者分享推薦時顯示的應用也是這個尺寸的表徵圖
- App store:市集中的顯示的表徵圖
Luanch Image Source(啟動圖片)和Luanch Screen File(啟動分頁檔)都是用來設定我們的啟動介面的。首先大家可能會很奇怪,為什麼每個App啟動時都會出現一些啟動圖片或廣告或動圖,很煩人對不對?但是啟動圖片是必須的,原因有兩點。
- 一來通過啟動圖片設定了我們App應用在本次啟動時以多大的介面進行展示資訊,如果不設定啟動介面,我們的App在開啟後後會出現黑屏的顯影導致應用無法正常使用。如果啟動圖片是iPhone6的螢幕大小的圖片,則在iPhone X上只顯示iPhone6的螢幕大小地區,上下會有兩條黑邊。因此,我們再設定啟動介面的時候一般是需要適配各種螢幕大小尺寸的啟動圖片。如所示的介面可以看到設定Luanch Image Source(啟動圖片)是有多種尺寸的。
- 二來則是在我們點擊應用表徵圖啟動應用時,應用啟動需要一定的操作時間,在啟動期間,為了增強應用程式啟動時的使用者體驗,您應該提供一個啟動映像。啟動映像與應用程式的首螢幕看起來非常相似。當使用者在主畫面上點擊您的應用程式圖示時,iPhone OS會立即顯示這個啟動映像。一旦準備就緒,您的應用程式就會顯示它的首螢幕,來替換掉這個啟動佔位映像。一定要強調的是,之所以提供啟動映像,是為了改善使用者體驗,並不是為了提供:應用程式進入體驗」,比如啟動動畫。
剛剛我們說過了,Luanch Image Source(啟動圖片)和Luanch Screen File(啟動分頁檔)都是用來設定我們的啟動介面的,那麼他們之間有什麼區別呢?
- Luanch Image Source(啟動圖片):同樣對應著檔案資源Assets.xcassets目錄中的LuanchImage中的圖片,設定了各種情況下的啟動圖片,具體介面如所示,和Appicon一樣,我們將所有切好的表徵圖直接拖過來,他們會自動找到自己應該放在的格子裡,同樣可以選擇裝置以及不同方向的啟動圖。
- Luanch Screen File(啟動分頁檔):是通過一個LuanchScreen.storyboard檔案來作為啟動介面。
兩種方法之間主要的區別在於開機檔案的優先順序高於啟動圖片,也就是說如果兩個都設定了,那麼啟動頁面以開機檔案為準,如果都沒有設定,則應用會黑屏。
在一般的項目開發中,我們一般都只使用啟動圖片設定啟動介面(現在由於storyboard應用得比較多了,也有很多採用設定開機檔案的方式來設定啟動介面的,大家根據自己的需求和習慣進行設定都可以的),由於開機檔案的優先順序高於啟動圖片,所以我們需要將開機檔案後的檔案名稱刪去,此外我們還需要將項目中的LuanchScreen.storyboard檔案也給刪去,這是因為App在啟動時系統會自動尋找LuanchScreen.storyboard的檔案進行載入,所以我們需要進行這兩步,具體如所示。
5 設定主介面(廢棄storyboard)
現在建立一個project時,xcode會預設主介面是通過main.storyboard設定App的主介面的,而設定主介面的方法除了這個還有另外一個方法就是通過代碼的方式進行設定。那麼系統是怎麼判斷我們是如何設定主介面的呢?這個問題就涉及到一部分啟動流程的問題。
我們都知道,項目啟動並執行起點是main函數,在我們的iOS項目中也不例外,我們可以看到,項目中有一個main.m主函數,這裡面只有一個方法就是我們的main方法,代碼如下,很簡單。
#import <UIKit/UIKit.h>#import "AppDelegate.h"int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); }}
這個主函數的作用主要是有以下四點,最後一點則告訴我們系統是如何選擇我們設定了主介面的。
- 建立Application對象
- 建立AppDelegate對象,並且設定成為Application對象的代理屬性
- 開啟主迴圈,目的是讓程式一直跑起來
- 載入info.plist檔案,判斷下info.plist檔案裡有沒有main.storyboard,如果有,就去載入main.storyboard,如果沒有main.storyboard,則判斷項目中是否自行建立了主介面,如果自己也沒有自行建立住控制器,則程式無法啟動。
在實際的項目開發過程中,一般而言我們都是採用純程式碼搭建架構,並不會用storyboard去構建我們的App,因為項目中必然涉及到非常多的介面以及互相之間的跳轉,用storyboard控制邏輯會顯得很混亂,而且我們一般都是多人合作開發一個項目,用storyboard則無法進行多人協作的方式。所以,要採用手動設定主介面需要分為兩步:
6 搭建目錄結構
對於一個比較複雜的項目,我們再開發過程中肯定不能把所有的檔案都直接放在一個檔案夾目錄下,我們需要搭建目錄結構對其進行層次化和結構化管理,這樣便於我們在出現問題時快速定位到個功能模組上。對於項目的目錄結構,沒有統一的規範,主要是方便我們隊我們的項目模組進行區分。
這裡比較推薦的兩種搭建目錄方法如下: