從做項目中學(xué)習(xí)iOS開發(fā)(一)——BullsEye

自打?qū)WiOS開發(fā)以來笔宿,也想找出適合自己的學(xué)習(xí)方法质和,因為埋頭鉆研語法的知識稳摄、開發(fā)的細(xì)節(jié)組成部分,實在是有些枯燥饲宿。這些東西本身是有用的秩命,但是如果是初學(xué)者來自學(xué)的話,很容易陷入只見樹木不見森林的困境褒傅,甚至因為沒找到成就感和激勵,過早地退出了自學(xué)的循環(huán)袄友,扔下一句“我學(xué)不會”就離開了殿托,也是挺可惜的(自己差點就這樣:))。

自從碰到了Ray Wenderlich出的iOS Apprentice教程(一共4個App的教程)剧蚣,跟著做完了第一個BullsEye之后支竹,覺得這種開始學(xué)習(xí)就能看見成果、由淺入深但不流于表面的學(xué)習(xí)方式鸠按,簡直就是我期待已久的教程礼搁。做完了第一個教程的App,分享一下收獲和體會目尖。

學(xué)會程序員的思考方式

教程的開頭馒吴,就是開始逐漸教你如何學(xué)會程序員的思考方式,比如作者給出了一個BullsEye的最終效果圖瑟曲,首先需要你去思考如何實現(xiàn)它饮戳。重點是這里并非是要你想到如何去用代碼實現(xiàn),因為你都還沒開始學(xué)洞拨,而是要你用自然語言來描述一下需要做哪些步驟扯罐。知道要做什么之后,怎么做的問題基本就難不倒你了烦衣,這也是程序員的核心能力——分解任務(wù)和復(fù)雜的問題歹河。
成為一個真正的程序開發(fā)者掩浙,還是成為一個代碼工人,這也是你要去思考的秸歧,思考厨姚,正是區(qū)分二者的關(guān)鍵。

理解編程的基本概念

這也是這個教程的獨(dú)特和難能可貴之處寥茫,因為作者并沒有假設(shè)你會一些基本的概念遣蚀,而把這些東西跳過去,相反纱耻,他把一些最最基礎(chǔ)的概念講解得非常形象化且易于理解:比如什么是變量芭梯?對象?發(fā)送消息弄喘?字符串玖喘?... ...等等這些編程的基本概念,在一般的書和教程中蘑志,要么是沒有累奈,或者就是非常枯燥急但、學(xué)術(shù)的解釋澎媒。其實許許多多的想學(xué)編程人,往往會容易卡在這些問題上波桩,而這些甚至被一般的寫書的作者和大牛所忽視戒努,因為太基礎(chǔ)了。

成果激勵——把知識點穿插于具體的App開發(fā)中

先學(xué)會C語言镐躲,再學(xué)Objective-C储玫,再學(xué)iOS的Cocoa Touch框架,前面的都掌握之后萤皂,你就可以開始編寫漂亮的App了撒穷。這個“理想”的路徑看起來很美,但是在現(xiàn)實中裆熙,至少就我個人的經(jīng)驗來說端礼,這基本不可行。
因為你想學(xué)iOS開發(fā)的初心或許是因為App Store中的那些美妙的應(yīng)用入录、使用iPhone的優(yōu)雅體驗齐媒,總之都是一些很美好、有情感的東西打動了你纷跛,然后你想學(xué)iOS開發(fā)了喻括,想開發(fā)出自己的App,抱著這個憧憬和目標(biāo)贫奠,你打開了買來的書和教程唬血,準(zhǔn)備學(xué)C語言和Objective-C了望蜡。但是,當(dāng)你硬著頭皮往前學(xué)了一段時間拷恨,你還是不知道怎么開發(fā)一個App脖律,甚至,教程上教你的仍然是命令行程序腕侄,連UI都沒有小泉,這時,你看了一下學(xué)習(xí)語言花去的時間冕杠,再估計一下自己開發(fā)出第一個App的時間微姊,頓時覺得遙遙無期,這種挫折感足以令許多本來可以學(xué)會iOS開發(fā)的人望而卻步分预。
那么兢交,除了這條路徑之外,還有沒有別的更好的方法呢笼痹,這個教程就給出了一個很好的范例配喳,你學(xué)到的知識是馬上就可以應(yīng)用到這個App的開發(fā)中的,而且關(guān)于這個知識點的記憶凳干,是鮮活的晴裹,因為你清楚地知道它可以用來解決哪些問題,而不只是書本上的一個干巴巴的概念救赐。

學(xué)習(xí)的過程和筆記

一涧团、開發(fā)這個App的步驟分解

BullsEye的成品效果圖

我寫的步驟:
1.進(jìn)入游戲之后,首先告訴用戶需要干什么净响,怎么玩這個游戲,需要一個Label來告訴用戶喳瓣,比如“讓滑動條接近20”馋贤;
2.目標(biāo)數(shù)字怎么得來的呢?這需要在每回合隨機(jī)生成一個1~100的隨機(jī)數(shù)畏陕;
3.我需要有一個數(shù)值為1~100的滑動條配乓,來讓用戶滑動;
4.用戶在滑動條上拖動完成后惠毁,在滑動條下方提供一個按鈕犹芹,用來核對游戲結(jié)果,并用一個alertView顯示出來鞠绰;
5.游戲結(jié)果怎么計算腰埂,其中的算法是:檢查目標(biāo)數(shù)字和用戶拖動的數(shù)字之間的絕對值,用100分滿分減去這個絕對值蜈膨,得出0~100的得分屿笼;
6.有兩個Label牺荠,分別用來顯示累計得分和回合數(shù);
7.提供一個重新再來的按鈕驴一,這樣用戶可以清空總得分和回合數(shù)休雌,可以和別人一起比拼;
8.游戲要橫屏操作肝断;
9.游戲開始時杈曲,播放背景音樂,如果可以實現(xiàn)胸懈,最好在每次的得分宣布時担扑,播放音效,比如“好棒啊箫荡,第一把就一擊命中了~”魁亦;
10.有一個顯示制作消息或幫助提示的按鈕,點擊會切換到另一個modal頁面羔挡,里面顯示textview或者一個webview洁奈,用來顯示相關(guān)信息。

二绞灼、對象利术、消息和方法的概念

這三個對于iOS開發(fā)和面向?qū)ο缶幊蹋际侵匾母拍畹桶W髡哂靡环鶊D印叁,關(guān)于組織聚會、買冰淇淋是例子军掂,形象地解釋了這些概念轮蜕。


對象、消息蝗锥、方法和買冰淇淋的關(guān)系

三跃洛、變量的概念

形象地解釋了變量的作用——存儲某個數(shù)據(jù),而且根據(jù)“形狀”的不同终议,有五角星汇竭、有矩形,還告訴你聲明的不同變量存儲不同的數(shù)據(jù)類型穴张。


變量的概念

四细燎、算法

聽到“算法”兩個字,恐怕許多人會很頭大皂甘,不過在BullsEye中玻驻,比較玩家的數(shù)值和目標(biāo)數(shù)值的差距,來得出玩家的得分偿枕,作者用這個例子來引入算法的概念击狮,幫大家祛魅佛析、解除對算法的恐懼感珠移。


別害怕拜姿,算法而已

五、代理的使用

這也是這個教程簡潔但不簡單的一個體現(xiàn)鹿寨,很快就接觸到iOS的一個核心的概念——代理档冬,代理在iOS開發(fā)中應(yīng)用廣泛膘茎,這里用了一個例子:點擊游戲的按鈕、計算出得分之后酷誓,得分的顯示框UIAlertView還在披坏,游戲已經(jīng)自動開始下一局了,這顯然不是好的用戶體驗盐数,所以借此引入了代理的概念棒拂。用戶點擊UIAlertView的Button時,發(fā)送消息給它的代理對象玫氢,讓代理對象來實現(xiàn)代理方法帚屉,開始下一局。

六漾峡、美化界面

美化之前的界面

這樣的用戶交互界面攻旦,還稱不上是一個真正的App,如果這樣提交到App Store生逸,毫無疑問會被拒的牢屋。所以,開始來美化這款A(yù)pp:

  1. 加載教程給出的圖片資源文件槽袄,當(dāng)然如果自己會PS的也可以自己畫一些圖標(biāo)之類的烙无;
  2. 美化按鈕,給按鈕加上背景圖片遍尺;
  3. 美化滑動條截酷,這個暫時蘋果沒有提供直接在storyboard上改,而是需要手寫一段代碼狮鸭;
  4. 把游戲說明的textView改為webView合搅,所以在這第一個教程我們就簡單地接觸到了加載網(wǎng)頁多搀,雖然是一個本地的HTML5頁面歧蕉;
美化之后的界面

七、適配多種屏幕

作為一款真正的App康铭,顯然不能只是在自己這款機(jī)型上用的惯退,現(xiàn)在仍然可以運(yùn)行iOS8的機(jī)型有:iPhone 4s、5从藤、5c催跪、5s锁蠕、6、6 Plus懊蒸,這就涵蓋了3.5寸荣倾、4寸、4.7寸骑丸、5.5寸這幾種屏幕尺寸舌仍,如果每個尺寸都要單獨(dú)提供圖片資源的話,相信開發(fā)者或者設(shè)計師會瘋掉的通危。所以這時引入了自動布局(Auto Layout)技術(shù)铸豁,如果你是使用storyboard來設(shè)計UI界面的話,自動布局將更加便捷菊碟,可以直觀地設(shè)置幾個約束节芥,你的App就可以跑在多個iPhone機(jī)型上了,還是挺酷的:)

八逆害、真機(jī)調(diào)試運(yùn)行

經(jīng)過了一段學(xué)習(xí)的旅程头镊,你完成了這個教程,這時忍燥,怎么能按捺住自己的沖動拧晕,而不把App裝到自己iPhone上呢?在之前梅垄,這通常需要你有付費(fèi)的開發(fā)者賬號($99厂捞,或者¥688),但是隨著Xcode7的即將發(fā)布队丝,至少真機(jī)調(diào)試是不需要付費(fèi)的(我沒等Xcode7靡馁,已經(jīng)在萬能的淘寶解決了這個問題)

繼續(xù)前進(jìn)

做完了這個App,可謂麻雀雖小机久,五臟俱全臭墨,iOS開發(fā)的核心概念都有涉及,而且更重要的是膘盖,學(xué)習(xí)的過程就是做一個真實的App的過程胧弛,每一步都有進(jìn)展、得到正向的激勵反饋侠畔。已經(jīng)迫不及待開始之后的幾個教程了:)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末结缚,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子软棺,更是在濱河造成了極大的恐慌红竭,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異茵宪,居然都是意外死亡最冰,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進(jìn)店門稀火,熙熙樓的掌柜王于貴愁眉苦臉地迎上來暖哨,“玉大人,你說我怎么就攤上這事凰狞÷故瘢” “怎么了?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵服球,是天一觀的道長茴恰。 經(jīng)常有香客問我,道長斩熊,這世上最難降的妖魔是什么往枣? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮粉渠,結(jié)果婚禮上分冈,老公的妹妹穿的比我還像新娘。我一直安慰自己霸株,他們只是感情好雕沉,可當(dāng)我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著去件,像睡著了一般坡椒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上尤溜,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天倔叼,我揣著相機(jī)與錄音,去河邊找鬼宫莱。 笑死丈攒,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的授霸。 我是一名探鬼主播巡验,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼碘耳!你這毒婦竟也來了显设?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤藏畅,失蹤者是張志新(化名)和其女友劉穎敷硅,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體愉阎,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡绞蹦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了榜旦。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片幽七。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖溅呢,靈堂內(nèi)的尸體忽然破棺而出澡屡,到底是詐尸還是另有隱情,我是刑警寧澤咐旧,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布驶鹉,位于F島的核電站,受9級特大地震影響铣墨,放射性物質(zhì)發(fā)生泄漏室埋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一伊约、第九天 我趴在偏房一處隱蔽的房頂上張望姚淆。 院中可真熱鬧,春花似錦屡律、人聲如沸腌逢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽搏讶。三九已至,卻和暖如春霍殴,著一層夾襖步出監(jiān)牢的瞬間窍蓝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工繁成, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留吓笙,地道東北人。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓巾腕,卻偏偏與公主長得像面睛,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子尊搬,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,162評論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫叁鉴、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,105評論 4 62
  • Swift版本點擊這里歡迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh閱讀 25,392評論 7 249
  • 一位少女初戀了常侣。晚上蜡饵,她伏在案上給男友寫情詩,然后輕輕讀著:“早晨胳施,我不吃飯溯祸,想你;中午舞肆,我不吃飯焦辅,想你;夜晚椿胯,我...
    梓毓爸閱讀 112評論 0 3
  • 家附近有兩個服裝店筷登,是我學(xué)生時代常去的。 一家已經(jīng)搬遷了哩盲,最后一次買仆抵,老板對我說“裝修一下”。現(xiàn)在是個不倫不類的酒...
    老晁閱讀 327評論 0 2