第二篇,App流程--从新建项目到打包

这两天做了一个小小项目,之前都是同事建好工程,放到bitbucket上面,然后我再pull下来的。这次因为是小工程,就给我自己搞了,遇到不少坑。说一下大概流程吧。

先是建一个“Podfile”文件,这是在之前的工程复制过来的,加到工程后,在终端执行命令“pod install”。第一个坑,应该是网络问题,我pod了半天,没反应,然后删了工程,从头开始,还是如此,后来几经波折,等了半天,终于把一些第三方库pod下来了。

Podfile(一定要一毛一样)


然后是建一个预编译文件(详细见 http://blog.csdn.net/crazyzhang1990/article/details/44243343 )。这个就不能直接复制粘贴了,不难,但有点琐碎,参照上面的博客一步步来吧。

预编译文件

有了这两个文件,一个工程,基本上就建好了,当然,这是在本地的工程文件,如果是要多人开发,就需要利用bitbucket的远程仓库了,下篇博客我要捋一捋如何利用bitbucket建仓库,实现多人开发。

中间的工程怎么写就不说了,这只是一个小工程,加了两个webview而已。但这里也有一个坑,就是要改一改“info.plist”文件的网络加载设置,这貌似从Xcode7开始就要修改的了,我一开始忘了,捣鼓了半天没数据,郁闷死了,后来才想起。加了这两行之后就能加载网络数据了。

在info.plist文件里面添加这两条

然后就是修改应用名字,添加工程的icon,launchImage,还有第一次启动的引导图。一个一个来。

改应用名字,同样是在info.plist文件中添加一行“Bundle display name”,然后在它后面写上你要修改的名字就行了。

添加icon,这时候,看需求而定,看需不需要iPad版,这就需要美工准备多套图了。单有时候你会发现,有些icon没有也是没有影响的,貌似系统会给你自动补全一些。


icon所需的图标尺寸

设置启动页LaunchImage,要做适配,也需要4个尺寸的图片,对应的是4s,5,6,6plus。

对应的launchImage
启动图尺寸

正常情况下直接如上图所示,把图片加到LaunchImage里面就可以了,还有要在“General”那里设置一下,详细看设置启动页。但有些项目有特殊要求,则需要另建一个“LaunchViewController”,并通过下面的代码,获取LaunchImage。工程默认会把icon跟LaunchImage的图片另外存放起来,放到一个字典数组里面,而且会自动匹配屏幕大小,通过

“NSArray* imageDict = [[[NSBundlemainBundle]infoDictionary]valueForKey:@"UILaunchImages"];”

可以拿出不同尺寸的图片数组。

- (void)setUpBackgorundImageView

{

NSString*launchImageName;

NSArray* imageDict = [[[NSBundlemainBundle]infoDictionary]valueForKey:@"UILaunchImages"];

for(NSDictionary* dictinimageDict) {

CGSizeimageSize =CGSizeFromString(dict[@"UILaunchImageSize"]);

if(CGSizeEqualToSize(imageSize,kKeyWindow.bounds.size)) {

launchImageName = dict[@"UILaunchImageName"];

}

}

UIImage*backgorundImage =[UIImage imageWithName:launchImageName];

UIImageView*backgorundImageView = [[UIImageViewalloc]initWithImage:backgorundImage];

[self.viewaddSubview:backgorundImageView];

WEAKESELF

[backgorundImageViewmas_makeConstraints:^(MASConstraintMaker*make) {

make.edges.equalTo(weakSelf.view);

}];

}

设置引导页,引导页一般有多页,每页有一张全屏的图片,下面有几个UIPageControl,正常的解决思路应该是,这是一个scrollView,scrollView上有n张跟屏幕一样大小的图片。上面还有一个pageControl的view。这些全屏的图片,也是需要UI准备多套的,跟launchimage一样,也是4套。貌似系统没有像LaunchImage一样给引导页特殊的待遇,也就是没有自动匹配屏幕,所以只能用最笨的方法:给每套图的每张图片一个不一样的命名,然后根据设备的宽度去选择加载不同的图片。(如果你有更好方法请私下发简信给我0.0)话不多说,上代码:

- (void)setUpBackgorundImageView

{

UIImage*backgorundImage =UIImageWithName([NSStringscreenImageFullNameWithImageName:@"GuideImage"]);

UIImageView*backgorundImageView = [[UIImageView alloc] initWithImage:backgorundImage];

backgorundImageView.userInteractionEnabled=YES;

self.backgorundImageView= backgorundImageView;

[self.viewaddSubview:backgorundImageView];

WEAKESELF

[backgorundImageViewmas_makeConstraints:^(MASConstraintMaker*make) {

make.edges.equalTo(weakSelf.view);

}];

}

+ (NSString*)screenImageFullNameWithImageName:(NSString*)imageName

{

NSString*subtype;

NSUIntegerscreenHeigh = (NSUInteger)CGRectGetHeight([UIScreenmainScreen].bounds);

switch(screenHeigh) {

case480:

{

subtype =@"iPhonePortraitiOS56_320x480pt";

break;

}

case568:

{

subtype =@"iPhonePortraitiOS56_320x568pt";

break;

}

case667:

{

subtype =@"iPhonePortraitiOS8_375x667pt";

break;

}

case736:

{

subtype =@"iPhonePortraitiOS8_414x736pt";

break;

}

}

NSString*fullName = [NSStringstringWithFormat:@"%@%@", imageName, subtype];

returnfullName;

}

根据屏幕尺寸,拼写图片名称,选择加载的图片。当然,引导页是要另外有一个“GUI的ViewController”的,而这个controller的显示,是由“pageFlowManager”管理的,工程有一个叫做“hasLaunched”的布尔属性,默认值是"NO",当工程在设备上运行一次后,就会被设为“YES”,并利用“UserDeafult”保存到本地,每次打开应用,判断到“hasLaunched”值为“YES”,则不再进入引导页的controller。这就涉及到一个账号管理系统。我前一篇有写,但有点粗糙。0.0

至此,一个完整的应用,应该就完成了,然后就应该将工程打包一个“ipa”文件,发给甲方测试,或者提交应用市场审核。详细的打包流程。参考博客。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,012评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,589评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,819评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,652评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,954评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,381评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,687评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,404评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,082评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,355评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,880评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,249评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,864评论 3 232
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,007评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,760评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,394评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,281评论 2 259

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 11,595评论 4 59
  • 关于配音模块 这周完成的 配音模块的整个流程已经基本跑通,完成了配音的发布流程、配音的评论功能、我的配音的管理...
    heartshapebox阅读 230评论 0 0
  • 详情请移步github地址查看具体文档。https://github.com/huang303513/transl...
    NS西北风阅读 2,220评论 0 6
  • 【加拿大游记之四】 今天是到加拿大的第五天,时差也都倒过来了,孩子们的精力那是旺盛的不行!今天一天都是泡在多伦多动...
    黑球妈妈阅读 348评论 0 1
  • 好久没写文章了,最近一次发文还是1月9号。 原因当然有很多,一是学期期末,杂事较多,必须把平常攒下来的事儿全部处理...
    不一样的你并不孤独阅读 355评论 0 3