復雜界面設(shè)計的實現(xiàn)和樣式管理
iOS App最終呈現(xiàn)給用戶的是一組組的UI界面,而對于一個特定的App來說赚瘦,其UI的設(shè)計元素(如配色粟誓,字體大小,間距等)基本上是固定的起意,另外鹰服,組成該App的基礎(chǔ)組件(如Button種類,輸入框種類等)也是有限的杜恰。但是如何管理获诈,組合仍源,重用組件則是架構(gòu)師需要考慮的問題心褐,尤其是一些App在開發(fā)過程中可能出現(xiàn)大量的UI樣式重構(gòu)舔涎,更需要清晰的控制住重構(gòu)的影響范圍。這兒的復雜性本質(zhì)上是UI組件自身設(shè)計實現(xiàn)的復雜性逗爹,多UI組件之間的組合方式和UI組件的重用機制亡嫌。
路由設(shè)計
對于一個大型的iOS應用,通常會把其功能按Feature拆分掘而,經(jīng)過這樣的拆分之后挟冠,其可能出現(xiàn)的路由有以下幾種:
APP間路由: 從其它App調(diào)起當前App,并進入一個很深層次的頁面(圖示1)袍睡。
APP內(nèi)路由:
啟動進入App的Home頁面(圖示2)
從Home頁面到進Feature Flow(圖示3)
Feature內(nèi)按流程的頁面的路由(圖示4)
各Feature之間的頁面跳轉(zhuǎn)(圖示5)
各Feature共享的單點信息頁的跳轉(zhuǎn)(圖示6)
根據(jù)Apple官方的MVC架構(gòu)知染,這些復雜的各種跳轉(zhuǎn)邏輯,以及跳轉(zhuǎn)前的ViewController的準備工作等邏輯纏繞在AppDelegate的初始化斑胜,ViewController的UI邏輯中控淡。這兒的復雜性主要是UI和業(yè)務(wù)之間纏繞不清的相互耦合。
應用狀態(tài)管理
一個iOS應用本質(zhì)上就是一個狀態(tài)機止潘,從一個狀態(tài)的UI由User Action或者API調(diào)用返回的Data Action觸發(fā)達到下一個狀態(tài)的UI掺炭。為了準確的控制應用功能,開發(fā)者需要能夠清楚的知道:
應用的當前UI是由哪些狀態(tài)決定的凭戴?
User Action會影響哪些應用狀態(tài)涧狮?如何影響的?
Data Action會影響哪些應用狀態(tài)么夫?如何影響的者冤?
在MVC,MVVM档痪,VIPER的架構(gòu)中譬嚣,應用的狀態(tài)分散在Model或者Entity中,甚至有些狀態(tài)直接保存在View Controller中钞它,在跟蹤狀態(tài)時經(jīng)常需要跨越多個Model拜银,很難獲取到一個全貌的應用狀態(tài)。另外遭垛,對于Action會如何影響應用的狀態(tài)跟蹤起來也比較困難尼桶,尤其是當一個Action產(chǎn)生的影響路徑不同,或最終可能導致多個Model的狀態(tài)發(fā)生改變時锯仪。這兒的復雜性主要體現(xiàn)在治理分散的狀態(tài)泵督,以及管理不統(tǒng)一的狀態(tài)改變機制帶來的復雜性。