在開發(fā)過程中,需要同時處理小屏和橫屏不同版本的APP。通過以下步驟,即可實現(xiàn)。由于工程中嵌套了一個子工程,因此子工程和本工程都需要做相應的操作。
1、子工程中,分別右鍵其中每個TARGETS的名稱-->Duplicate,生成的名稱為原名稱加上“copy”字樣的名稱。點擊兩下KSPassport、KSPassportResource重命名為KSPassport_FullScreen、KSPassportResource_FullScreen.
子工程中復制生成targets效果圖如下:

原子工程TARGETS.png

復制子工程TARGETS后生成的文件目錄.png
2、本工程中,復制生成新的應用,并修改其名稱

本工程原TARGETS目錄.png

本工程復制后生成的TARGETS目錄.png

本工程生成的.app文件.png
3、點擊本工程名稱-->Manage Scheme,點擊修改相應的文件名稱

設置Scheme的入口.png

修改名稱.png
4、在代碼中根據全局的宏定義來分別處理兩個版本。在子工程中,全局宏定義如下圖所示,在小屏時設置一個NONFULLSCREEN的參數,在橫屏時無需設置此宏定義參數。

子工程的小屏設置一個宏定義參數.png
代碼區(qū)分如下:
{
#if defined (NONFULLSCREEN)
//小屏代碼處理
#else
//橫屏代碼處理
#endif
}
注意:代碼處理過程中要加載不同的bundle,因此也需要根據該宏定義參數進行區(qū)分。
5、在本工程中,根據兩個應用的不同加載不同的Target Denpendencies,如圖:

小屏.png

橫屏.png
運行程序時,選擇不同的應用即可區(qū)分開兩個APP.
6、在本工程中,由于是直接復制應用的,因此其Build里的參數都是一樣的。所以需要將橫屏里的build參數進行修改,主要有以下兩項,在Build Phases中:
Link Binary With Libraries中的libKSPassport.a,換成libKSPassport_FullScreen.a
Copy Bundle Resources中的KSPassportResource.bundle換成KSPassportResource_FullScreen.bundle
7、最后可以根據需要,在子工程中的資源里面選擇各自所需要的資源,刪掉不必要的資源文件。