這兩天做了一個小小項目,之前都是同事建好工程刻伊,放到bitbucket上面露戒,然后我再pull下來的。這次因為是小工程捶箱,就給我自己搞了智什,遇到不少坑。說一下大概流程吧丁屎。
先是建一個“Podfile”文件荠锭,這是在之前的工程復(fù)制過來的,加到工程后悦屏,在終端執(zhí)行命令“pod install”节沦。第一個坑,應(yīng)該是網(wǎng)絡(luò)問題础爬,我pod了半天甫贯,沒反應(yīng),然后刪了工程看蚜,從頭開始叫搁,還是如此,后來幾經(jīng)波折供炎,等了半天渴逻,終于把一些第三方庫pod下來了。
然后是建一個預(yù)編譯文件(詳細見 http://blog.csdn.net/crazyzhang1990/article/details/44243343 )音诫。這個就不能直接復(fù)制粘貼了惨奕,不難,但有點瑣碎竭钝,參照上面的博客一步步來吧梨撞。
有了這兩個文件雹洗,一個工程,基本上就建好了卧波,當(dāng)然时肿,這是在本地的工程文件,如果是要多人開發(fā)港粱,就需要利用bitbucket的遠程倉庫了螃成,下篇博客我要捋一捋如何利用bitbucket建倉庫,實現(xiàn)多人開發(fā)查坪。
中間的工程怎么寫就不說了寸宏,這只是一個小工程,加了兩個webview而已咪惠。但這里也有一個坑击吱,就是要改一改“info.plist”文件的網(wǎng)絡(luò)加載設(shè)置,這貌似從Xcode7開始就要修改的了遥昧,我一開始忘了覆醇,搗鼓了半天沒數(shù)據(jù),郁悶死了炭臭,后來才想起永脓。加了這兩行之后就能加載網(wǎng)絡(luò)數(shù)據(jù)了。
然后就是修改應(yīng)用名字鞋仍,添加工程的icon常摧,launchImage,還有第一次啟動的引導(dǎo)圖威创。一個一個來落午。
改應(yīng)用名字,同樣是在info.plist文件中添加一行“Bundle display name”肚豺,然后在它后面寫上你要修改的名字就行了溃斋。
添加icon,這時候吸申,看需求而定梗劫,看需不需要iPad版,這就需要美工準(zhǔn)備多套圖了截碴。單有時候你會發(fā)現(xiàn)梳侨,有些icon沒有也是沒有影響的,貌似系統(tǒng)會給你自動補全一些日丹。
設(shè)置啟動頁LaunchImage走哺,要做適配,也需要4個尺寸的圖片哲虾,對應(yīng)的是4s丙躏,5齐帚,6,6plus彼哼。
正常情況下直接如上圖所示,把圖片加到LaunchImage里面就可以了湘今,還有要在“General”那里設(shè)置一下敢朱,詳細看設(shè)置啟動頁。但有些項目有特殊要求摩瞎,則需要另建一個“LaunchViewController”拴签,并通過下面的代碼,獲取LaunchImage旗们。工程默認(rèn)會把icon跟LaunchImage的圖片另外存放起來蚓哩,放到一個字典數(shù)組里面,而且會自動匹配屏幕大小上渴,通過
“NSArray* imageDict = [[[NSBundlemainBundle]infoDictionary]valueForKey:@"UILaunchImages"];”
可以拿出不同尺寸的圖片數(shù)組岸梨。
- (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);
}];
}
設(shè)置引導(dǎo)頁,引導(dǎo)頁一般有多頁稠氮,每頁有一張全屏的圖片曹阔,下面有幾個UIPageControl,正常的解決思路應(yīng)該是隔披,這是一個scrollView赃份,scrollView上有n張跟屏幕一樣大小的圖片。上面還有一個pageControl的view奢米。這些全屏的圖片抓韩,也是需要UI準(zhǔn)備多套的,跟launchimage一樣鬓长,也是4套谒拴。貌似系統(tǒng)沒有像LaunchImage一樣給引導(dǎo)頁特殊的待遇,也就是沒有自動匹配屏幕痢士,所以只能用最笨的方法:給每套圖的每張圖片一個不一樣的命名彪薛,然后根據(jù)設(shè)備的寬度去選擇加載不同的圖片。(如果你有更好方法請私下發(fā)簡信給我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;
}
根據(jù)屏幕尺寸善延,拼寫圖片名稱,選擇加載的圖片城侧。當(dāng)然易遣,引導(dǎo)頁是要另外有一個“GUI的ViewController”的,而這個controller的顯示嫌佑,是由“pageFlowManager”管理的豆茫,工程有一個叫做“hasLaunched”的布爾屬性侨歉,默認(rèn)值是"NO",當(dāng)工程在設(shè)備上運行一次后揩魂,就會被設(shè)為“YES”,并利用“UserDeafult”保存到本地,每次打開應(yīng)用幽邓,判斷到“hasLaunched”值為“YES”,則不再進入引導(dǎo)頁的controller火脉。這就涉及到一個賬號管理系統(tǒng)牵舵。我前一篇有寫,但有點粗糙倦挂。0.0
至此畸颅,一個完整的應(yīng)用,應(yīng)該就完成了方援,然后就應(yīng)該將工程打包一個“ipa”文件没炒,發(fā)給甲方測試,或者提交應(yīng)用市場審核犯戏。詳細的打包流程送火。參考博客。