前言
這將是一個系列的博文,這個系列將介紹一個iPhone軟件項目中遇到的各種坑以及我們的解決方案,其中包括:架構(gòu)設(shè)計、UI組件設(shè)計、storyboard使用、autolayout使用、coredata使用、藍(lán)牙解決方案 等。
項目背景
這是一個以客戶設(shè)計為導(dǎo)向的軟件??蛻粼O(shè)計?這是我自己杜撰出來的一個詞,如有雷同純屬巧合。
與以往的客戶需求導(dǎo)向不同,已經(jīng)不是單一的從客戶那進(jìn)行需求調(diào)研然后我們給出解決方案,做出原型然后確認(rèn)需求,最后開發(fā)。
客戶不僅僅有自己的需求,而且已經(jīng)把UI、互交、軟件層級都已經(jīng)給出。
看到這里可能大家一定想的是:都設(shè)計完了那還不好?直接開發(fā)就OK了啊,真是幫你們省事啊~
在之前我也是這么想的,可是拿到設(shè)計稿之后心中頓時出現(xiàn)幾個字:尼瑪!。
簡單介紹一下項目背景。這是一個配合硬件來使用的軟件,其中目前設(shè)想和規(guī)劃支持的硬件大致有 16 種??梢苑譃?大類分別是:健康、安全、家庭。暫時支持的硬件有:Thermometer(體溫計)、Activity Tracker(運(yùn)動手環(huán))、Pet Tracker(寵物追蹤器)。
客戶的想法
客戶想做這樣的一個軟件:
該軟件在最外層有一個類似于Android眾的Launcher的功能,能夠在這個Launcher中統(tǒng)一管理各個子軟件以及作為各子軟件的入口。
大家要注意的是這個軟件到最后需要支持的子軟件有16種之多。我們曾經(jīng)建議他們將這些子軟件都獨(dú)立成一個App,僅僅將Launcher作為入口和身份驗證,不要將子軟件完全在Lancher中實現(xiàn),否則這個Launcher將是一個非常龐大的App,不僅生成的安裝文件會非常的大,而且越到后面維護(hù)成本也會成指數(shù)增加。
但是~甲方如果能夠聽乙方的意見的話,那這個世界上就沒有難做的項目。最后也只有我們來妥協(xié)。
所以我們需要比較好一點(diǎn)的底層架構(gòu)來支持我們這個軟件,以至于到后期擴(kuò)展應(yīng)用與維護(hù)的時候不會那么困難,對于巨大的安裝文件我們是沒有辦法了。
UI、互交與層級
部分UI如下圖,關(guān)于美觀的問題這里就不做評價,各人審美不同(據(jù)客戶說是一個20多人的設(shè)計團(tuán)隊設(shè)計出來的#-_-)。



img
img
img



由截圖可以看出整個App的一個UI架構(gòu)可以分為三塊SideBar,Tabbar,MainView。
這種UI架構(gòu)是沒有什么問題的很主流,但是各位看官請注意側(cè)邊欄內(nèi)容,再看看底部導(dǎo)航欄,是不是有幾項是相似的?沒錯了這幾個相似的功能就是一樣的功能點(diǎn)擊后的效果是一致的!
客戶對側(cè)邊欄的定義是快捷方式。

做過App的尤其是iPhone App的應(yīng)該都知道,在開發(fā)之前都會設(shè)計一條優(yōu)質(zhì)的路徑去引導(dǎo)用戶如何來使用(也就是UINavigation)。這次完全打破了傳統(tǒng),要用Native App開發(fā)出Web App的特性,任意跳轉(zhuǎn)。
這只是整個項目中的一個坑,在后續(xù)的介紹中我們會一一指出,并提供我們的解決方案。
好廢話說了一大堆,現(xiàn)在是時候來干貨了,現(xiàn)在進(jìn)入我們的第一篇: