iOS 中创建一个Universal App并且添加多个target

在iOS中要想做一个通用iPhone和iPad的应用其实很简单,我们只需要在创建建工程的时候选择


这样你创建出来的工程就可以像这样


那么如果要想在工程里判断什么时候处理iPad的逻辑什么时候处理iPhone的逻辑也很简单,只需要添加一个define即可



#define isPad (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
if (isPad) {
        self.view.backgroundColor = [UIColor yellowColor];
    }else{
        self.view.backgroundColor = [UIColor blueColor];
    }

这样的话,就可以看到效果了,自行测试吧


如果要想改变已经做好的工程也很容易,在target的旁边也有一个选项,也可以改变



添加target

如果你做一个工程有很多相似之处,例如一个是收费版,一个是免费版,那么可以用添加target的方法来完成


从XCode左侧的列表中, 我们可以看到一个Target包含了Copy Bundle Resources, Compile Sources, Link Binary With Libraries. 其中
Copy Bundle Resources 是指生成的product的.app内将包含哪些资源文件
Compile Sources 是指将有哪些源代码被编译
Link Binary With Libraries 是指编译过程中会引用哪些库文件

通过Copy Bundle Resources中内容的不同设置, 我们可以让不同的product包含不同的资源, 包括程序的主图标等, 而不是把XCode的工程中列出的资源一股脑的包含进去.
而这还不是一个target所指定的全部内容. 每个target可以使用一个独立, 不同的Info.plist文件.
我们都知道, 这个Info.plist文件内定义了一个iPhone项目的很多关键性内容, 比如程序名称, 最终生成product的全局唯一id等等.

而且不同的target还可以定义完整的差异化的编译设置, 从简单的调整优化选项, 到增加条件编译所使用的编译条件, 以至于所使用的base SDK都可以差异化指定.


可以通过复制target去创建新的target,也可以自己完全创建新的target,之后如果想判断哪个target做什么操作,就可以使用这个方法



NSString* bundleName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"];
    NSLog(@"name == %@",bundleName);



参考文章:XCode工程内多Targets教程

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值