昨天完成了了第一個iOS項目毙石,功能很簡單,就是把大眾點評的團購信息颓遏,新聞頭條徐矩,網(wǎng)絡(luò)笑話, 微信精選叁幢,歷史上的今天集中組合在了一個App中滤灯,這樣我就可以在一個App里面把自己每天用手機要觀看的,日常感興趣的幾件事情全部都干完曼玩,這樣比跑幾個App看很多的廣告鳞骤,申請很多賬號要效率的多。以后可能會將每天用手機做的事情更多的添加進來黍判,但是目前就是這么簡單的一個App豫尽,我把它叫做M記。
從有開發(fā)這個App的想法到完成功能用了20天左右的時間样悟,當然還花時間在閱讀Coding的源碼拂募,有時間會將每個階段閱讀Coding源碼的收獲也寫成博客,不過那估計就是一個系列文章了窟她。在獨立開發(fā)App的時候總會遇上一些和在企業(yè)開發(fā)不同的困難陈症,當然解決了這些問題都有了不小的收獲。
開發(fā)時候我很快就遇上了第一個問題沒有圖標震糖,網(wǎng)上找的很多圖標都是要么每次只能找一個录肯,需要一個個的進行保存,然后調(diào)尺寸和名稱吊说。因為同一個圖標沒有不同尺寸的论咏,當圖標的大小發(fā)生變化的時候要么讓系統(tǒng)自動ScaleTofill要么就只能自己切,結(jié)果出來的效果簡直不能太美颁井,完全影響寫代碼的心情厅贪。原本在網(wǎng)上搜索到的可以簡單的解決圖標問題的軟件要么是付費的,要么就有一點學習門檻雅宾,我并不打算在這上面浪費更多時間养涮。所幸最后讓我發(fā)現(xiàn)了一個神奇軟件ICON8(記得掏廣告費),只要在google上面搜索下載安裝到電腦上以后你就會使用了,零門檻太棒了贯吓!它提供上千種icon圖片懈凹,每個圖片都有25px、32px悄谐、50px介评、75px、100px爬舰、128px们陆、256px、512px這八種尺寸的情屹,在不付費的情況下也可以使用他們的100px以下尺寸棒掠。最重要的是里面很多圖片可以根據(jù)調(diào)色板自己來選擇圖標的顏色。這樣甚至一次性解決了我們在高亮狀態(tài)下顯示的問題屁商,只需要把同樣的一組圖片改一下顏色就好了,對于我這個一點PS都不會的人來說簡直不要太友好颈墅,所有圖標的問題都解決了蜡镶。
然后是第二個問題沒有數(shù)據(jù)源,公司的App數(shù)據(jù)都是由公司的服務(wù)器來提供的恤筛,服務(wù)器端可以有很多方法來解決這些問題官还,可是寫一個簡單的App就沒辦法這么大費周章了,就算是在網(wǎng)上爬數(shù)據(jù)也需要我會寫爬蟲毒坛,我可沒這么多閑工夫(——酒桶)望伦。費了一番功夫找到了大眾點評的API,但是其他的API還需要解決煎殷。果然這個問題很多人都遇到過屯伞,而且已經(jīng)有人找到了解決方案,在知乎有人提到聚合數(shù)據(jù)豪直。注冊以后劣摇,填寫了實名認證,第二天我就看到了很多可以用的免費接口弓乙。包括一些笑話末融,頭條,快遞查詢等也有收費的暇韧,但是對于我來說免費的就夠了勾习。所以這個問題完美解決。
我相信這兩個問題是很多iOS自己開發(fā)項目懈玻,或者初學者找項目練手時候都會遇到的問題巧婶,那么我的經(jīng)驗就是解決方案,或許有更好的解決方式,這畢竟是其中一種粹舵,不是么钮孵。
第三個問題是在申請完聚合接口時候遇到的,用AFNetWorking來進行網(wǎng)絡(luò)請求的時候返回的是failed眼滤,但是在error里面又有數(shù)據(jù)巴席,而用原生框架NSURLSession請求的時候就正常了返回正常的數(shù)據(jù),用Charles進行抓包顯示的reponse也是正常的诅需。翻閱AFNetWorking文檔漾唉,當在請求出現(xiàn)錯誤或者返回的數(shù)據(jù)AFNetWorking不能解析的時候就會返回failed。所以問題就出在返回的數(shù)據(jù)不能解析堰塌,最終找到解決方式是因為聚合數(shù)據(jù)返回的數(shù)據(jù)是@“text/html"的赵刑,而原本的AFNetWoring里面可接受的內(nèi)容類型是:
self.acceptableContentTypes= [NSSetsetWithObjects:@"application/json",@"text/json",@"text/javascript",nil];
里面沒有@"text/html",把它加進去
self.acceptableContentTypes= [NSSetsetWithObjects:@"application/json",@"text/json",@"text/javascript",@"text/html",nil];
就一切順利,返回正常解析正常场刑。
第四個問題是PCH文件般此,在xcode 7 之前系統(tǒng)會在項目里默認生成一個PCH文件,作為一個預(yù)編譯文件牵现,我們需要在里面加些預(yù)編譯指令和頭文件進去铐懊,比如經(jīng)常使用的庫的頭文件,屏幕的長寬高瞎疼,各種API等等科乎,但是在xcode 7 以后系統(tǒng)就將這個文件從默認生成的文件中取消了,如果要用需要自己去創(chuàng)建贼急。本著蘋果不提倡的就是我們所舍棄的的原則茅茂,看來這個文件是不能用了,試著自己創(chuàng)建添加了一下太抓,就出現(xiàn)了好幾個莫名其妙的錯誤空闲,要么Pod庫文件報錯,要么路徑報錯腻异,總是各種不得勁进副。只好刪掉自己然后自己創(chuàng)建了一個頭文件來引用。
第五個問題是用MJRefresh的時候悔常,因為就是實現(xiàn)了簡單的下拉上拉刷新功能影斑,沒有細致的研究,結(jié)果在使用的時候發(fā)現(xiàn)机打,設(shè)置了上下拉屬性以后在UI上面不顯示矫户,這個在換了另外一個下拉上拉動畫后好了。
第六個問題在使用XIB設(shè)置UI的時候残邀,設(shè)置自定義的CELL皆辽,Cell里面加載的子控件柑蛇,兩個控件設(shè)置的約束一模一樣,但是位置就會出現(xiàn)偏差驱闷。比如兩個label 耻台,每個都設(shè)置距離底部為10,在顯示的時候就會發(fā)現(xiàn)一個比另一個高出一截空另,查看約束會發(fā)現(xiàn)計算距離的起始位置居然不一樣盆耽。還有一個是XiB設(shè)置完約束后跑起來整個頁面就亂成一團糟,檢查約束也沒有發(fā)現(xiàn)問題扼菠,將XIB刪掉用Masonry按照設(shè)置約束的思路重新寫一遍就正常了摄杂。這兩個問題沒有進行深追,但是已經(jīng)堅定了我以后用純代碼進行UI布局的決心循榆。
這個小小的個人項目目前會停止更新有好的點子以后再考慮更新析恢,接下來會仿做一個App并把它記錄下來。
M記的項目托管在git上? https://github.com/scholarin/MyAssistant/commits/master?