了解Sky的項目結構和UI構成

在這個系列里,我們通過從零開始開發(fā)一個完整的天氣App - Sky,來理解并掌握MVVM的編程思想。并且,在這個過程中,我們還會引入RxCocoa、單元測試,以及UI測試等內(nèi)容,盡可能還原一個比較真實的App獨立開發(fā)場景。

作為整個系列的開始,我們先了解一下這個App的大體構成,并用MVC的方式勾勒出一個輪廓。這樣,我們就會很自然的從一些熟悉的場景,過渡到MVVM了。

整理項目目錄

首先,還是創(chuàng)建一個Single View Application,這不過這次,記得把Include Unit TestsInclude UI Tests選上,在稍后的內(nèi)容里,我們會涉及到單元測試以及UI測試的內(nèi)容:

FrameTheAppInMVC

其次,我們把Xcode默認創(chuàng)建的項目目錄結構調(diào)整成下面這個樣子:

FrameTheAppInMVC

它們的含義大多簡單直觀,我們就不再一一說明了。這里,有兩點要說明下:

  • 在大家下載下來的項目初始模板里,Assets.xcassets中已經(jīng)包含了項目需要的所有圖片資源;
  • 當我們把Info.plist放在了SupportingFiles目錄下之后,如果我們直接編譯項目,就會看到下面這樣的錯誤:
FrameTheAppInMVC

這時,我們就要在TARGETS中選中Sky,然后,在Build Settings里把Info.plist File的設置修改成對應的位置:

FrameTheAppInMVC

這樣,就不會再有錯誤了。

從設計首頁Storyboard開始

接下來,打開Main.storyboard,我們從構建首屏UI開始。在這個界面上,我們先拖兩個Container View進來,其中,上半部分用于顯示當前的天氣信息;下半部分將會設計成一個UITableView,用于顯示天氣預告:

FrameTheAppInMVC

然后,設置上下兩部分容器的位置約束:

FrameTheAppInMVC

完成后,選中上半部分的Container View,按住Ctrl拖拽到下面的Container View上,在彈出的菜單中,選擇Vertical SpacingEqual Heights

FrameTheAppInMVC

最后,在storyboard中選中Equal Heights約束,在Attribute Inspector中,把Multiplier選項設置成2:3。這樣,上下兩部分在任何屏幕上,就都有固定的比例顯示了。

FrameTheAppInMVC

完成后,我們來處理顯示當前天氣的部分,為了方便整體控制這部分內(nèi)容的加載,我們先拖一個UIView進來作為這部分所有其他元素的容器,并按下圖給它設置約束:

FrameTheAppInMVC

接下來,拖一個UIImageView進來,表示當前天氣的圖片,按照下圖給它添加約束之后,在Attribute Inspector里,把默認的圖片設置成clear-day

FrameTheAppInMVC

完成后,我們拖兩個UIButton進來,放在這個區(qū)域的左右上角,并按下圖設置它們的屬性和位置約束:

FrameTheAppInMVC

這里,要注意的是,一定要清空這兩個按鈕的默認文字內(nèi)容,否則會影響計算它們的大小。其中,左邊的按鈕用于切換地區(qū),右邊的按鈕,用于對App的行為進行一些設置,它們都將是我們在稍后的內(nèi)容中實現(xiàn)的部分,現(xiàn)在,只是把它們放在這里就好了。

完成后,我們添加一些UILabel。第一個,表示當前所在城市:

FrameTheAppInMVC

第二個,表示當前天氣的文字描述:

FrameTheAppInMVC

第三個,表示當前時間:

FrameTheAppInMVC

第四個,表示當前溫度:

FrameTheAppInMVC

第五個,表示當前濕度:

FrameTheAppInMVC

這樣,表示當前溫度信息的UI部分就完成了,直接執(zhí)行一下,可以在模擬器里,看到下面這樣的結果:

FrameTheAppInMVC
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容