iOS开发设计多个target
创建target有两种方式,
1>.是通过新建target可以通过File-->New-->Target,然后选择其中一个模板来创建,app类型的target进行创建
2>.另一种方法是通过对原有的target做duplicate,复制一份
今天主要讲第二种方式创建target过程:
1、创建工程命名:CeShiTarget
2、在TARGET中选中项目,右键->Duplicate->Duplicate Only
3、经过以上步骤创建出来的target命名为之前工程名+copy(CeShiTarget copy),接下来做一下修改:
- 双加CeShiTarget copy重命名如:OtherApp
- 修改生成的CeShiTarget copy-Info.plist文件命名为OtherApp.plist
- 设置OtherApp的Bundle Identifier如:come.huaban.OtherApp,修改Bundle display name 如:OtherApp
- 在Build Setting中搜索packaging设置Info.plist File路径为我们创建的plist路径,Private Headers Folder Path修改为OtherApp/PrivateHeaders
- 在manager schmes中修改新创建target的名称,选中新创建的target->设置->Duplicate->命名为OtherApp,此时可选择将CeShiTarget copy删除
4、生成一个新的target,一定会与原target有区别,这里可以定义预编译宏,来区分两个版本的不同代码,预编译宏可以在Build Settings中Preprocessor Macros定义,比如在我们新建的OtherApp中定义
分别双击Debug、Release点击+号按钮,输入CHANNEL=1

效果:

此时在代码中就可以根据宏做事情
#ifdef CHANNEL
//OtherApp中需要执行的代码
#else
//CeShiTarget中需要执行的代码
#endif
具体怎么执行,一下步骤(我将Main.storyboard删除了,纯代码写)
1>在TARGET(CeShiTarget、OtherApp)->Main Interface清空
2>appDelegate中:
self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
self.window.rootViewController = [ViewController new];
3>在ViewController:
#ifdef CHANNEL self.btn.hidden = YES; #else self.btn.hidden = NO; #endif
经过以上就完成设置
可以更进一步设置,如果想设置两个main.m、appdelegate文件分别管理两个应用,其实也很简单
1>选择CeShiTarget文件->show in finder ->创建文件夹命名为OtherApp,将文件夹拖入工程(记得add to targets选择OtherApp),此时工程中两个文件夹CeShiTarget、OtherApp在同一级

2>在OtherApp中创建类OtherAppDelegate继承UIResponder,注意target为OtherApp


创建类OtherAppDelegate,注意targets选择OtherApp

3>创建main.m文件,注意targets选择OtherApp,修改代码如下

3>可以讲OtherApp.plist->show in finder中移动到OtherApp文件夹下并移动到工程,在General中从新选择OtherApp.plist就可以了,在Build Setting ->packaging下查看info.plist file路径是否正确
4>设置AppDelegate、ViewController、CeShiTarget的main.m的target设置为CeShiTarget(点击.m文件在右侧可看到),不要勾选OtherApp
5>以后再创建类或文件是注意targets,否则报错找不到文件
最终目录如下:

同时可以分别设置AppIcon和LaunchImage:
1>Assets.xcassets中创建CeshiTargetAppIcon、CeshiTargetLaunchImage和otherTargetAppIcon、otherTargetLaunchImage,并分别设置图片
2>删除LauchScreen.storyboard,分别在TARGET中设置CeshiTarget和CeshiTarget,如下:


完成
iOS开发设计多个target的更多相关文章
- IOS开发设计思路
我在做 iOS 开发的时候,发现自己在写程序的时候,常常处于两种状态的切换,我把这两种状态称为软件开发的上帝模式与农民模式.我先给大家介绍一下这两种模式的特点. 上帝模式 处于上帝模式时,我需要构思整 ...
- 100个iOS开发/设计面试题汇总
常见问题 你昨天/这周学习了什么? 你为什么热衷于软件开发? 你对哪一种控制系统比较熟悉? 是否参与过GitHub项目? 是否参与过GitHub或其他同类型网站的iOS开源项目? 请描述一下你的iOS ...
- iOS 开发设计常用软件及工具整理
1, xCode 2, AppCode 3, Skech 原型设计软件 4, Hype 动画设计工具 5, fontawsome 免费图表 6, Prepo icon, images.catlog 生 ...
- 100个iOS开发/设计面试题汇总,你将如何作答?
原文: http://www.csdn.net/article/2015-01-19/2823604-ios-interview-questions 常见问题 你昨天/这周学习了什么? 你为什么热衷于 ...
- iOS开发——OC篇&消息传递机制(KVO/NOtification/Block/代理/Target-Action)
iOS开发中消息传递机制(KVO/NOtification/Block/代理/Target-Action) 今晚看到了一篇好的文章,所以就搬过来了,方便自己以后学习 虽然这一期的主题是关于Fou ...
- iOS开发之浅谈MVVM的架构设计与团队协作
今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...
- iOS开发中如何创建多个target
在开发iOS应用程序的过程中,经常需要根据不同的需求,切换到不同的项目配置,或者打不同的包(测试环境.开发环境.生产环境等等),如果每次都是手动配置,一则比较麻烦,二则容易配置错,那么有没有更好的方案 ...
- iOS开发:代码通用性以及其规范 第二篇(猜想iOS中实现TableView内部设计思路(附代码),以类似的思想实现一个通用的进度条)
在iOS开发中,经常是要用到UITableView的,我曾经思考过这样一个问题,为什么任何种类的model放到TableView和所需的cell里面,都可以正常显示?而我自己写的很多view却只是能放 ...
- iOS的设计备忘录/资源集合(新手快速开发)
iOS的设计备忘录 随着iOS7更新,风格走上扁平化,大部分iOS设计师及程序员都需要对自己的软件做相关调整,尺寸.Icon.UI等等,我在这里总结一下相关资料,以及提供一些关于iOS7设计素材. 一 ...
随机推荐
- 多个Activity和Intent
Intent是Android应用程序组件之一,在Android系统当中表示一种意图,Intent中包含了一组信息: 最重要的内容是action(动作)和data(数据) Component name ...
- 洛谷P2342-叠积木
Problem 洛谷P2342-叠积木 Accept: 373 Submit: 1.1k Time Limit: 1000 mSec Memory Limit : 128MB Problem ...
- 转://Oracle 11gR2 ASM磁盘组管理
一.环境.[grid@rhel2 ~]$ cat /etc/issueRed Hat Enterprise Linux Server release 5.5 (Tikanga) Kernel \r o ...
- gulp学习-metamask前端使用
https://www.gulpjs.com.cn/docs/getting-started/ ,这个是3.9.0版本 后面发现安装的版本是4.0.0,看下面这个: https://github.co ...
- day12 Python字典
类:dict #字典是无序的 1.前戏 info = { "k1": "v1", # 键值对 "k2": "v2" } ...
- 移动App测试实战—专项测试
我们在进行了手工的功能测试之后,也开发了一些自动化测试用例,并且做了性能测试之后,测试工作看似比较完整了.但是当我们的App在大量的用户那里被安装和使用的时候,还是会有很多我们之前没有预料的问题 ...
- Spring任务调度器之Task的使用(转)
文章转自 http://blog.csdn.net/l454822901/article/details/51829307 最近发现真的凹凸了,spring升级到3后原来已经自带任务调度器了,之前还一 ...
- RabbitMq、ActiveMq、ZeroMq、kafka之间的比较
MQ框架非常之多,比较流行的有RabbitMq.ActiveMq.ZeroMq.kafka.这几种MQ到底应该选择哪个?要根据自己项目的业务场景和需求.下面我列出这些MQ之间的对比数据和资料. 第一部 ...
- ImageView android:scaleType="centerCrop"
转载地址:http://www.cnblogs.com/yejiurui/archive/2013/02/25/2931767.html 在网上查了好多资料,大致都雷同,大家都是互相抄袭的,看着很费劲 ...
- 授人以鱼不如授人以渔——和女儿学一起学成语
女儿二年级了,前段时间背了<小学生必背古诗词75首>,采用几天一篇,然后滚动复习这种方式.磕磕绊绊也把一本古诗背了一遍,效果吗?是有的,但是不怎么明显,前面背,后面忘.当然这是规律,难免的 ...