在开发过程中,需要同时处理小屏和横屏不同版本的APP。通过以下步骤,即可实现。由于工程中嵌套了一个子工程,因此子工程和本工程都需要做相应的操作。
1、子工程中,分别右键其中每个TARGETS的名称-->Duplicate,生成的名称为原名称加上“copy”字样的名称。点击两下KSPassport、KSPassportResource重命名为KSPassport_FullScreen、KSPassportResource_FullScreen.
子工程中复制生成targets效果图如下:
2、本工程中,复制生成新的应用,并修改其名称
3、点击本工程名称-->Manage Scheme,点击修改相应的文件名称
4、在代码中根据全局的宏定义来分别处理两个版本。在子工程中,全局宏定义如下图所示,在小屏时设置一个NONFULLSCREEN的参数,在横屏时无需设置此宏定义参数。
代码区分如下:
{
#if defined (NONFULLSCREEN)
//小屏代码处理
#else
//横屏代码处理
#endif
}
注意:代码处理过程中要加载不同的bundle,因此也需要根据该宏定义参数进行区分。
5、在本工程中,根据两个应用的不同加载不同的Target Denpendencies,如图:
运行程序时,选择不同的应用即可区分开两个APP.
6、在本工程中,由于是直接复制应用的,因此其Build里的参数都是一样的。所以需要将横屏里的build参数进行修改,主要有以下两项,在Build Phases中:
Link Binary With Libraries中的libKSPassport.a,换成libKSPassport_FullScreen.a
Copy Bundle Resources中的KSPassportResource.bundle换成KSPassportResource_FullScreen.bundle
7、最后可以根据需要,在子工程中的资源里面选择各自所需要的资源,删掉不必要的资源文件。