基于IOS平臺(tái)下的天氣軟件_第1頁(yè)
基于IOS平臺(tái)下的天氣軟件_第2頁(yè)
基于IOS平臺(tái)下的天氣軟件_第3頁(yè)
基于IOS平臺(tái)下的天氣軟件_第4頁(yè)
基于IOS平臺(tái)下的天氣軟件_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、摘 要隨著科技的發(fā)展,移動(dòng)智能終端逐漸走進(jìn)人們的視線,相關(guān)應(yīng)用越來(lái)越廣泛,并在人們的日常生活中扮演著越來(lái)越重要的角色。因此,關(guān)鍵應(yīng)用程序的開發(fā)成為影響移動(dòng)智能終端普及的重要因素,設(shè)計(jì)并開發(fā)實(shí)用、方便的應(yīng)用程序具有重要的意義和良好的市場(chǎng)前景。ios作為當(dāng)前最流行的操作平臺(tái),自然也存在著大量的應(yīng)用服務(wù)需求。本課題研究的是基于ios平臺(tái)下的天氣軟件,目的是幫助用戶隨時(shí)隨地查詢天氣信息及天氣變化情況,讓生活更加舒適方便。本文詳細(xì)講述了ios平臺(tái)下天氣軟件的界面設(shè)計(jì)及異常處理部分,主要包括界面的實(shí)現(xiàn)、控件的使用、界面的布局和異常的處理等內(nèi)容,結(jié)合中國(guó)氣象網(wǎng)的天氣數(shù)據(jù),將準(zhǔn)確的天氣情況以友好的方式呈現(xiàn)給用

2、戶,使用戶可以更加賞心悅目地體驗(yàn)本軟件的服務(wù)。關(guān)鍵字:ios;界面;控件;天氣軟件abstractwith the development of science and technology, the mobile terminal gradually into the peoples attention, related to more widely, and play an increasingly important role in peoples daily lives. therefore, the development of critical applications has b

3、ecome an important factor in the popularity of the mobile terminal, the design and development of practical, convenient application is of great significance and good market prospects. ios as the most popular operating platform, naturally, there are a lot of demand for application services.the study

4、of this topic is the weather software, based on the ios platform is designed to help the user to query weather information and weather changes anytime, anywhere, to make life more comfortable and convenient. this paper describes the software interface design of the ios platform under the weather and

5、 exception handling part, including the contents of the interface implementation, the use of controls, the layout of the interface, and exception handling, combined with weather data of the china meteorological association, will be accurate weather conditions presented to the user-friendly way, allo

6、ws the user to experience more enjoyable the service of this software.key words : ios;interface;control;weather software目 錄摘 要iabstractii目 錄iii1 緒論11.1 研究?jī)?nèi)容11.2 研究目的和意義11.3 研究前景12 ios開發(fā)環(huán)境及平臺(tái)搭建32.1 ios開發(fā)環(huán)境介紹32.2 ios開發(fā)平臺(tái)搭建33 項(xiàng)目分析43.1 用戶界面43.2 性能分析43.3 需求分析43.4 異常分析43.5 相關(guān)技術(shù)介紹53.5.1 objective-c53.5.2 x

7、code53.5.3 cocoapods63.5.4 mantle63.5.5 lbblurredimage63.5.6 tsmessages63.5.7 reactivecocoa74 界面設(shè)計(jì)及實(shí)現(xiàn)84.1 加載界面84.2主視圖的實(shí)現(xiàn)94.2.1 狀態(tài)欄顯示設(shè)置94.2.2 主視圖布局設(shè)置114.3 獲取天氣數(shù)據(jù)144.3.1 創(chuàng)建天氣模型144.3.2 轉(zhuǎn)換json數(shù)據(jù)154.3.3 發(fā)送數(shù)據(jù)請(qǐng)求174.3.4 管理存儲(chǔ)數(shù)據(jù)184.3.5 獲取當(dāng)前位置194.4未來(lái)天氣界面214.4.1 未來(lái)天氣界面實(shí)現(xiàn)214.4.2 未來(lái)天氣界面優(yōu)化235 異常處理256 界面測(cè)試26總結(jié)29致 謝

8、30參考文獻(xiàn)311 緒論1.1 研究?jī)?nèi)容本文介紹了基于ios平臺(tái)下天氣軟件的界面及異常處理部分內(nèi)容,詳細(xì)介紹了加載界面、實(shí)時(shí)天氣界面、未來(lái)天氣界面和搜索界面進(jìn)行界面設(shè)計(jì)及實(shí)現(xiàn),出現(xiàn)異常情況的處理等內(nèi)容,目的是使用戶能夠更加賞心悅目地體驗(yàn)此軟件帶來(lái)的服務(wù)。通過(guò)對(duì)界面的布局及控件的應(yīng)用等相關(guān)內(nèi)容的學(xué)習(xí),使我們對(duì)ios平臺(tái)下界面開發(fā)工作有一個(gè)初步的了解,并且經(jīng)過(guò)這次開發(fā)過(guò)程,能夠基本掌握這些內(nèi)容。軟件開發(fā)后能夠幫助用戶隨時(shí)隨地搜索由中國(guó)氣象局提供的全國(guó)2564個(gè)縣級(jí)以上城市的天氣信息,并且把數(shù)據(jù)顯示在一個(gè)界面美觀、布局合理窗口內(nèi),使用戶能夠舒適的享受軟件帶來(lái)的服務(wù)。1.2 研究目的和意義隨著智能手機(jī)

9、的大眾化,越來(lái)越多的人應(yīng)用智能手機(jī)。相對(duì)的對(duì)手機(jī)軟件的需求也就越來(lái)越多。當(dāng)今時(shí)代手機(jī)不再只是用來(lái)打電話、發(fā)短信的工具,反而對(duì)手機(jī)的娛樂(lè)功能要求越來(lái)越高。蘋果手機(jī)作為當(dāng)今中國(guó)智能手機(jī)市場(chǎng)上不可或缺的一個(gè)品牌,基于ios的手機(jī)軟件需求量也就相應(yīng)的越來(lái)越強(qiáng)。智能手機(jī)的應(yīng)用使現(xiàn)代人的生活更加的方便。伴隨著蘋果手機(jī)進(jìn)入中國(guó)市場(chǎng),相應(yīng)的ios技術(shù)逐漸流行起來(lái)。而對(duì)于開發(fā)蘋果應(yīng)用的語(yǔ)言object-c,也成為當(dāng)今社會(huì)最流行的開發(fā)語(yǔ)言,并且保持著強(qiáng)勁的上升趨勢(shì),隱隱有超過(guò)c語(yǔ)言的現(xiàn)象。天氣軟件是一種非常實(shí)用的信息服務(wù),隨著智能手機(jī)的不斷普及,各種智能手機(jī)平臺(tái)下都有各種各樣的天氣軟件。android作為現(xiàn)在主流

10、的智能手機(jī)之一,自然也需要這方面的軟件。天氣關(guān)系到人們的日常生活,如告知溫暖,方便出行等。此外,對(duì)未來(lái)天氣的預(yù)測(cè)還可以幫助人們進(jìn)行農(nóng)作物的澆灌、施肥、收割等工作。基于ios平臺(tái)的天氣軟件已經(jīng)有很多,經(jīng)過(guò)分析,用戶第一眼往往是一個(gè)軟件的外觀,一個(gè)好看的界面才能讓用戶以一種愛美之心去嘗試,才能進(jìn)一步了解一個(gè)軟件的好壞,所以吸引眼球的界面是爭(zhēng)取用戶的第一步。因此,界面設(shè)計(jì)工作對(duì)應(yīng)用程序來(lái)說(shuō)非常重要,在界面上吸引了用戶,才能進(jìn)一步讓用戶體驗(yàn)應(yīng)用程序中的功能,使用這個(gè)軟件。1.3 研究前景隨著蘋果產(chǎn)品的不斷推陳出新,相應(yīng)的各類應(yīng)用開發(fā)也越來(lái)越火爆。目前,ios在智能手機(jī)應(yīng)用下載量中占比33%,ios平板

11、電腦應(yīng)用下載量占比75%,由此可見,ios相關(guān)應(yīng)用軟件有著龐大的消費(fèi)眾群。而產(chǎn)品的升級(jí)換代,新產(chǎn)品的開發(fā),都離不開手機(jī)軟件開發(fā)團(tuán)隊(duì)強(qiáng)有力的支持?,F(xiàn)在各大企業(yè)都在積極擴(kuò)充研發(fā)隊(duì)伍,像是游戲軟件開發(fā)的崗位缺口就非常大。其8-10萬(wàn)的年薪,讓很多年輕人加入到學(xué)習(xí)ios開發(fā)的隊(duì)伍中。 據(jù)對(duì)在讀學(xué)習(xí)人群統(tǒng)計(jì),目前大部分學(xué)員來(lái)自應(yīng)屆的大學(xué)生。眾所周知,現(xiàn)在大學(xué)生就業(yè)難,薪水低。而學(xué)習(xí)ios開發(fā),不但可以掌握最新的技術(shù),還可以找到薪水福利不錯(cuò)的工作,未來(lái)也有很大的發(fā)揮空間。另一部分人群,則是ios相關(guān)從業(yè)人員,隨著技術(shù)的日新月異,希望能通過(guò)短時(shí)間集中培訓(xùn),使技能得到提升,更好的應(yīng)用到實(shí)際工作中。 近兩年隨著

12、iphone的興起,基于iphone的第三方應(yīng)用軟件頻出不窮,參與的ios開發(fā)人員也越來(lái)越多,在此情況下,很多app的質(zhì)量以及用戶體驗(yàn)都無(wú)法完全保證。以iphone天氣預(yù)報(bào)作為例子:它出現(xiàn)在市場(chǎng)上的時(shí)間很早,目前存在的數(shù)量也很多,但是功能不全,用戶體驗(yàn)不到位,界面不美觀,沒(méi)有吸引用戶使用甚至長(zhǎng)時(shí)間使用的獨(dú)特優(yōu)勢(shì)。但是作為工具類app,天氣預(yù)報(bào)的作用巨大且不可替代,很多用戶不得不為了可以預(yù)知天氣情況而忍受了其軟件商家強(qiáng)行植入廣告以及糟糕的體驗(yàn)。為了改善這種情況,iphone天氣預(yù)報(bào),作為iphone工具類app,肩負(fù)著重要的意義。它需要在基本的預(yù)知天氣外,還可以預(yù)知未來(lái)溫度,濕度,風(fēng)力情況等,做

13、到功能全面且具備娛樂(lè)性;同時(shí)還具有絢麗的界面以及優(yōu)秀的用戶體驗(yàn),形成一個(gè)實(shí)用并且高質(zhì)量的iphone應(yīng)用。2 ios開發(fā)環(huán)境及平臺(tái)搭建2.1 ios開發(fā)環(huán)境介紹開發(fā)環(huán)境的要求硬件:1.蘋果電腦, 必須是基于intel的macintosh計(jì)算機(jī)。2.iphone或ipod touch,主要用來(lái)測(cè)試編寫好的程序。軟件: 1.蘋果系統(tǒng)macos。2.iphone sdk(請(qǐng)從/iphone/下載最新版sdk),sdk中包含蘋果公司的集成開發(fā)環(huán)境xcode,iphone模擬器及其它一些開發(fā)工具。開發(fā)環(huán)境的簡(jiǎn)單介紹開發(fā)環(huán)境主要包括:1.xcode (主要

14、開發(fā)工具)。2.interface builder (界面快速設(shè)計(jì)工具)。3.iphone simulator (iphone模擬器)。4.sdk(software development kit,軟件開發(fā)工具包)。2.2 ios開發(fā)平臺(tái)搭建準(zhǔn)備一臺(tái)裝有mac_os_x的mac book(必須是基于intel的macintosh計(jì)算機(jī)),如果沒(méi)有蘋果的電腦可以選擇在windows系統(tǒng)電腦下安裝虛擬機(jī) vmware workstation再安裝mac_os_x系統(tǒng),然后下載并安裝ios sdk及開發(fā)工具 xcode在mac中找到iphonesdk的安裝文件,鼠標(biāo)雙擊該文件圖標(biāo),會(huì)看到一個(gè)彈出窗口

15、:進(jìn)一步選擇繼續(xù)并且等待安裝完成。注意在安裝過(guò)程中需要退出itunes這樣,整個(gè)平臺(tái)的搭建工作就完成了。3 項(xiàng)目分析3.1 用戶界面 根據(jù)應(yīng)用程序的功能需要,對(duì)用戶界面做如下分析:1.加載界面:程序開始運(yùn)行時(shí)顯示加載界面,此界面是應(yīng)用程序最先展示的窗口,所以,要盡量保持界面信息簡(jiǎn)潔,突出重點(diǎn)。這里設(shè)置為顯示學(xué)校的名稱、英文縮寫及版權(quán)信息。此界面的作用是,不僅將軟件的基本信息顯示給用戶,而且在加載的過(guò)程中進(jìn)行數(shù)據(jù)的初始化工作,將應(yīng)用程序運(yùn)行時(shí)需要的天氣信息提前做準(zhǔn)備;2.實(shí)時(shí)天氣界面:顯示城市當(dāng)前的實(shí)時(shí)天氣狀況,包括城市名稱、天氣描述、溫度高低、風(fēng)速、天氣描述圖片、獲取數(shù)據(jù)時(shí)間、日期、星期、溫馨

16、提示和是否默認(rèn)城市等信息。此界面是應(yīng)用程序的主界面,所以在設(shè)計(jì)的時(shí)候應(yīng)盡量使界面美觀,將天氣數(shù)據(jù)以用戶所容易接受的方式呈現(xiàn)出來(lái);3.未來(lái)天氣界面:對(duì)未來(lái)6天的天氣情況簡(jiǎn)要描述,簡(jiǎn)要顯示星期、天氣描述、溫度高低等數(shù)據(jù),使用戶一目了然,使人們及時(shí)了解天氣變化,對(duì)日常生活出行、穿衣做好準(zhǔn)備;經(jīng)過(guò)以上分析可知,應(yīng)用程序共需要三個(gè)界面,即加載界面、實(shí)時(shí)天氣界面、未來(lái)天氣界面,來(lái)實(shí)現(xiàn)應(yīng)用程序中的基本功能。3.2 性能分析程序響應(yīng)速度快,安全性能高,信息處理速度快,操作界面簡(jiǎn)單直接,反饋信息直觀清楚,給用戶帶來(lái)良好的使用體驗(yàn)。3.3 需求分析1.能夠查詢顯示手機(jī)當(dāng)前位置的天氣情況及其未來(lái)幾天或幾小時(shí)內(nèi)天氣的

17、變化情況。2.顯示當(dāng)前最高,最低氣溫。3.系統(tǒng)必須具有安全性,可靠性,獨(dú)立性。3.4 異常分析當(dāng)應(yīng)用程序中的界面沒(méi)有正常顯示天氣數(shù)據(jù),出現(xiàn)假死或者跑出程序錯(cuò)誤時(shí),視為程序異常。經(jīng)過(guò)分析,應(yīng)用程序在連接網(wǎng)絡(luò)和解析數(shù)據(jù)時(shí),容易出現(xiàn)異常,所以在設(shè)計(jì)的時(shí)候應(yīng)仔細(xì)分析原因,并且認(rèn)真對(duì)待,在出現(xiàn)異常的地方給出具體解決方案,使用戶享受到更友好的體驗(yàn)。3.5 相關(guān)技術(shù)介紹3.5.1 objective-cobject-c是擴(kuò)充c的面向?qū)ο缶幊陶Z(yǔ)言。它主要使用于mac os x和gnustep這兩個(gè)使用openstep標(biāo)準(zhǔn)的系統(tǒng),而在nextstep和openstep中它更是基本語(yǔ)言。objective-c可以

18、在gcc運(yùn)作的系統(tǒng)寫和編譯,因?yàn)間cc含objective-c的編譯器。1980年代初布萊德確斯(brad cox)在其公司stepstone發(fā)明objective-c。目前主要是編寫ios操作系統(tǒng)應(yīng)用程序的利器。近幾年objective-c排名大幅提升,它的流行當(dāng)歸功于iphone的成功,因?yàn)閛bjective-c一直被用于編寫iphone應(yīng)用程序。 objective-c是非常實(shí)際的語(yǔ)言。它是一個(gè)用c寫成、很小的運(yùn)行庫(kù),只會(huì)令應(yīng)用程序的大小增加很小,和大部分oo系統(tǒng)使用極大的vm執(zhí)行時(shí)間會(huì)取代了整個(gè)系統(tǒng)的運(yùn)作相反。objc寫成的程序通常不會(huì)比其原始碼大很多。而其函式庫(kù)亦和smalltalk

19、系統(tǒng)要使用極大的內(nèi)存來(lái)開啟一個(gè)窗口的情況相反。3.5.2 xcodexcode是蘋果公司向開發(fā)人員提供的集成開發(fā)環(huán)境(非開源),用于開發(fā)mac os x,ios的應(yīng)用程序。其運(yùn)行于蘋果公司的mac操作系統(tǒng)下。不管你用c、c+、objective-c或java編寫程序,在applescript里編寫腳本,還是試圖從另一個(gè)奇妙的工具中轉(zhuǎn)移編碼,你會(huì)發(fā)現(xiàn) xcode 編譯速度極快。每次操作都很快速和輕松。xcode 將賦予你創(chuàng)建諸如計(jì)算和渲染引擎應(yīng)用程序的能力,這些應(yīng)用程序使用64位內(nèi)存定址。這非常適合數(shù)據(jù)集中的應(yīng)用程序,其通過(guò)訪問(wèn)內(nèi)存中的數(shù)據(jù)運(yùn)行速度更快,遠(yuǎn)勝于磁盤訪問(wèn)。xcode 將為你提供工具

20、來(lái)建立并調(diào)試適合 intel core i5, i7 和 mac os x lion 的 32 或 64 位應(yīng)用程序,還可以讓你創(chuàng)建包含32位和64位執(zhí)行能力的 fat binaries。xcode 擁有眾多功能,為 java 開發(fā)人員賦予了更多的開發(fā)能力。利用改進(jìn)的 code sense 索引及 ant 項(xiàng)目模板,java 用戶可以繼續(xù)使用他們的標(biāo)準(zhǔn) java 包,并構(gòu)建具有 xcode 關(guān)鍵生產(chǎn)功能的工具。java 代碼填充為你提供類別名、方法、變量及其他關(guān)鍵信息。在 xcode 中創(chuàng)建 java應(yīng)用程序比以往更容易。因?yàn)?xcode 支持 codewarrior 風(fēng)格相關(guān)項(xiàng)目參考,所以可

21、以保證把 codewarrior 項(xiàng)目文件快速方便地轉(zhuǎn)移到 xcode。因?yàn)?xcode 兼容 codewarrior 風(fēng)格在線編碼匯編,所以從 codewarrior 到 xcode 轉(zhuǎn)變的消耗得到降低, 也使得開發(fā)人員手動(dòng)調(diào)整應(yīng)用程序的臨界性能部分。蘋果電腦公司的 mac os x 綜合開發(fā)環(huán)境xcode 為各種類型的 mac os x軟件項(xiàng)目提供項(xiàng)目編輯、搜索和瀏覽,文件編輯,項(xiàng)目構(gòu)建和調(diào)試設(shè)備等功能。xcode 可用來(lái)輔助開發(fā)應(yīng)用程序、工具、架構(gòu)、數(shù)據(jù)庫(kù)、嵌入包、核心擴(kuò)展和設(shè)備驅(qū)動(dòng)程序。xcode 支持開發(fā)人員使用 c、 c+、objective c、 applescript 和 ja

22、va。xcode 能夠和 mac os x 里眾多其它的工具協(xié)作,例如綜合用戶界面結(jié)構(gòu)應(yīng)用程序;編譯器如 gcc、javac 和jikes;還有調(diào)試工具如 gdb。另外,你可以用 applescript studio 組增加一個(gè) aqua 界面到系統(tǒng)和應(yīng)用程序腳本、命令行工具、以及網(wǎng)絡(luò)應(yīng)用程序中。以上三者無(wú)論如何都能在任何平臺(tái)組合成最強(qiáng)大的腳本環(huán)境。3.5.3 cocoapods在進(jìn)行ios開發(fā)的時(shí)候,總免不了使用第三方的開源庫(kù),比如sbjson、afnetworking、reachability等等。使用這些庫(kù)的時(shí)候通常需要:l 下載開源庫(kù)的源代碼并引入工程l 向工程中添加開源庫(kù)使用到的fr

23、ameworkl 解決開源庫(kù)和開源庫(kù)以及開源庫(kù)和工程之間的依賴關(guān)系、檢查重復(fù)添加的framework等問(wèn)題l 如果開源庫(kù)有更新的時(shí)候,還需要將工程中使用的開源庫(kù)刪除,重新執(zhí)行前面的三個(gè)步驟,頓時(shí)頭都大了。自從有了cocoapods以后,這些繁雜的工作就不再需要我們親力親為了,只需要我們做好少量的配置工作,cocoapods會(huì)為我們做好一切!cocoapods是一個(gè)用來(lái)幫助我們管理第三方依賴庫(kù)的工具 。它可以解決庫(kù)與庫(kù)之間的依賴關(guān)系,下載庫(kù)的源代碼,同時(shí)通過(guò)創(chuàng)建一個(gè)xcode的workspace來(lái)將這些第三方庫(kù)和我們的工程連接起來(lái),供我們開發(fā)使用。使用cocoapods的目的是讓我們能自動(dòng)化的、

24、集中的、直觀的管理第三方開源庫(kù)。3.5.4 mantlemantle是一個(gè)建??蚣?,實(shí)現(xiàn)了多個(gè)不同的nscoding和nscopying方法,還添加了許多非常便利的方法允許你實(shí)現(xiàn)更多有用的功能,比如返回一個(gè)json字典,以代表你的對(duì)象。很多情況下,mantle可以作為core data的替代選擇。3.5.5 lbblurredimagelbblurredimage 是 uiimageview 的分類,用于設(shè)置圖像并進(jìn)行模糊化處理。你將僅僅用一行代碼來(lái)創(chuàng)建一個(gè)神奇的模糊效果。3.5.6 tsmessagestsmessages可用于創(chuàng)建展示在屏幕頂端的自定義信息/通知提醒。通知在屏幕頂端展開,并

25、根據(jù)展示文本的長(zhǎng)度停留數(shù)秒??赏ㄟ^(guò)向上滑動(dòng)屏幕或者點(diǎn)擊屏幕來(lái)解除通知。 tsmessages提供了四種類型的通知:success、error、 warning和message。支持ios 7.圖3.1 警告效果圖3.5.7 reactivecocoareactivecocoa是github去年開源的一個(gè)項(xiàng)目,是在ios平臺(tái)上對(duì)frp的實(shí)現(xiàn)。frp的核心是信號(hào),信號(hào)在reactivecocoa(以下簡(jiǎn)稱rac)中是通過(guò)racsignal來(lái)表示的,信號(hào)是數(shù)據(jù)流,可以被綁定和傳遞??梢园研盘?hào)想象成水龍頭,只不過(guò)里面不是水,而是玻璃球(value),直徑跟水管的內(nèi)徑一樣,這樣就能保證玻璃球是依次排列,

26、不會(huì)出現(xiàn)并排的情況(數(shù)據(jù)都是線性處理的,不會(huì)出現(xiàn)并發(fā)情況)。水龍頭的開關(guān)默認(rèn)是關(guān)的,除非有了接收方(subscriber),才會(huì)打開。這樣只要有新的玻璃球進(jìn)來(lái),就會(huì)自動(dòng)傳送給接收方。可以在水龍頭上加一個(gè)過(guò)濾嘴(filter),不符合的不讓通過(guò),也可以加一個(gè)改動(dòng)裝置,把球改變成符合自己的需求(map)。也可以把多個(gè)水龍頭合并成一個(gè)新的水龍頭(combinelatest:reduce:),這樣只要其中的一個(gè)水龍頭有玻璃球出來(lái),這個(gè)新合并的水龍頭就會(huì)得到這個(gè)球。signal and subscriber這是rac最核心的內(nèi)容,signal獲取到數(shù)據(jù)后,會(huì)調(diào)用subscriber的sendnext,

27、sendcomplete, senderror方法來(lái)傳送數(shù)據(jù)給subscriber,subscriber自然也有方法來(lái)獲取傳過(guò)來(lái)的數(shù)據(jù),如:signal subscribenext:error:completed。這樣只要沒(méi)有sendcomplete和senderror,新的值就會(huì)通過(guò)sendnext源源不斷地傳送過(guò)來(lái)。signal是很靈活的,它可以被修改(map),過(guò)濾(filter),疊加(combine),串聯(lián)(chain),這有助于應(yīng)對(duì)更加復(fù)雜的情況。4 界面設(shè)計(jì)及實(shí)現(xiàn)4.1 加載界面加載界面是程序開始運(yùn)行時(shí)加載的界面。由分析可知,界面的主要功能是為應(yīng)用程序的運(yùn)行做準(zhǔn)備,包括數(shù)據(jù)庫(kù)的初

28、始化工作,下載默認(rèn)城市天氣信息等。在界面中主要顯示的應(yīng)用程序的基本信息。設(shè)計(jì)如下:圖4.1 加載界面設(shè)計(jì)圖根據(jù)設(shè)計(jì),實(shí)現(xiàn)加載界面主視圖控制器view controller,使用的布局文件是wxcontroller.m。選中simpleweather項(xiàng)目,單擊filenewfile,并且選擇cocoa touchobjective-c class. 命名為wxcontroller,并設(shè)置為uiviewcontroller的子類。確保targeted for ipad和with xib for user interface都沒(méi)有選中,如下圖所示:圖4.2 創(chuàng)建wxcontroller文件4.2 主

29、視圖的實(shí)現(xiàn)4.2.1 狀態(tài)欄顯示設(shè)置首先.初始化并設(shè)置wxcontroller實(shí)例作為app的根視圖控制器。通常這個(gè)控制器是一個(gè)的uinavigationcontroller或uitabbarcontroller,設(shè)置默認(rèn)的視圖控制器來(lái)顯示你的tsmessages。這樣做,將不再需要手動(dòng)指定要使用的控制器來(lái)顯示警告。實(shí)現(xiàn)代碼如下:- (bool)application:(uiapplication *)application didfinishlaunchingwithoptions:(nsdictionary *)launchoptions self.window = uiwindow al

30、loc initwithframe:uiscreen mainscreen bounds; self.window.rootviewcontroller = wxcontroller alloc init; self.window.backgroundcolor = uicolor whitecolor; self.window makekeyandvisible; tsmessage setdefaultviewcontroller: self.window.rootviewcontroller; return yes; 構(gòu)建app并運(yùn)行會(huì)發(fā)現(xiàn)狀態(tài)欄為黑色,顯示不夠清晰,效果如下圖:圖4.3

31、狀態(tài)欄顯示圖1在ios7,uiviewcontroller有一個(gè)新的api,用來(lái)控制狀態(tài)欄的外觀,打開wxcontroller,添加下面的代碼到-viewdidload即可實(shí)現(xiàn)。-(uistatusbarstyle)preferredstatusbarstyle return uistatusbarstylelightcontent;重新構(gòu)建app并運(yùn)行會(huì)發(fā)現(xiàn)這段代碼起作用了,狀態(tài)欄顯示為白色,狀態(tài)欄顯示效果如下圖:圖4.4狀態(tài)欄顯示圖24.2.2 主視圖布局設(shè)置在項(xiàng)目中創(chuàng)建并設(shè)置視圖,單擊fileadd files to “simpleweather”.定位到所需圖片文件夾并選擇它。選擇co

32、py items into destination groups folder (if needed),然后單擊add。打開wxcontroller.m,使用如下代碼替換掉-viewdidload中設(shè)置背景色的代碼。self.screenheight = uiscreen mainscreen.bounds.size.height; uiimage *background = uiimage imagenamed:bg; self.backgroundimageview = uiimageview alloc initwithimage:background; self.backgroundi

33、mageview.contentmode = uiviewcontentmodescaleaspectfill; self.view addsubview:self.backgroundimageview; self.blurredimageview = uiimageview alloc init; self.blurredimageview.contentmode = uiviewcontentmodescaleaspectfill; self.blurredimageview.alpha = 0; self.blurredimageview setimagetoblur:backgrou

34、nd blurradius:10 completionblock:nil; self.view addsubview:self.blurredimageview; self.tableview = uitableview alloc init; self.tableview.backgroundcolor = uicolor clearcolor; self.tableview.delegate = self; self.tableview.datasource = self; self.tableview.separatorcolor = uicolor colorwithwhite:1 a

35、lpha:0.2; self.tableview.pagingenabled = yes; self.view addsubview:self.tableview; 該代碼實(shí)現(xiàn)了.獲取并存儲(chǔ)屏幕高度。之后,在用分頁(yè)的方式來(lái)顯示所有天氣數(shù)據(jù)時(shí),使用它。創(chuàng)建一個(gè)靜態(tài)的背景圖,并添加到視圖上。使用lbblurredimage來(lái)創(chuàng)建一個(gè)模糊的背景圖像,并設(shè)置alpha為0,使得開始backgroundimageview是可見的。創(chuàng)建tableview來(lái)處理所有的數(shù)據(jù)呈現(xiàn)。 設(shè)置wxcontroller為delegate和datasource,以及滾動(dòng)視圖的delegate,設(shè)置pagingenable

36、d為yes。table view有兩個(gè)部分,一個(gè)是每小時(shí)的天氣預(yù)報(bào),另一個(gè)用于每日播報(bào)。table view的section數(shù)目,設(shè)置為2。天氣預(yù)報(bào)的cell是不可選擇的。設(shè)置為一個(gè)半透明的黑色背景和白色文字。其代碼如下:#pragma mark - uitableviewdatasource (nsinteger)numberofsectionsintableview:(uitableview *)tableview return 2; - (nsinteger)tableview:(uitableview *)tableview numberofrowsinsection:(nsinteg

37、er)section return 0; - (uitableviewcell *)tableview:(uitableview *)tableview cellforrowatindexpath:(nsindexpath *)indexpath static nsstring *cellidentifier = cellidentifier; uitableviewcell *cell = tableview dequeuereusablecellwithidentifier:cellidentifier; if (! cell) cell = uitableviewcell alloc i

38、nitwithstyle:uitableviewcellstylevalue1 reuseidentifier:cellidentifier; cell.selectionstyle = uitableviewcellselectionstylenone; cell.backgroundcolor = uicolor colorwithwhite:0 alpha:0.2; cell.textlabel.textcolor = uicolor whitecolor; cell.detailtextlabel.textcolor = uicolor whitecolor; return cell;

39、在wxcontroller.m的-viewdidload中,設(shè)置布局框架和邊距,設(shè)置table的header大小與屏幕相同。你將利用的uitableview的分頁(yè)來(lái)分隔頁(yè)面頁(yè)頭和每日每時(shí)的天氣預(yù)報(bào)部分。創(chuàng)建inset(或padding)變量,以便您的所有標(biāo)簽均勻分布并居中。創(chuàng)建并初始化為各種視圖創(chuàng)建的高度變量。設(shè)置這些值作為常量,使得可以很容易地在需要的時(shí)候,配置和更改您的視圖設(shè)置。使用常量和inset變量,為label和view創(chuàng)建框架。復(fù)制圖標(biāo)框,調(diào)整它,使文本具有一定的擴(kuò)展空間,并將其移動(dòng)到該圖標(biāo)的右側(cè)。當(dāng)把標(biāo)簽添加到視圖,會(huì)看到布局的效果。cgrect headerframe = ui

40、screen mainscreen.bounds;cgfloat inset = 20;cgfloat temperatureheight = 110;cgfloat hiloheight = 40; cgfloat iconheight = 30; cgrect hiloframe = cgrectmake(inset, headerframe.size.height - hiloheight, headerframe.size.width - (2 * inset), hiloheight); cgrect temperatureframe = cgrectmake(inset, head

41、erframe.size.height - (temperatureheight + hiloheight), headerframe.size.width - (2 * inset), temperatureheight); cgrect iconframe = cgrectmake(inset, temperatureframe.origin.y - iconheight, iconheight, iconheight); cgrect conditionsframe = iconframe; conditionsframe.size.width = self.view.bounds.si

42、ze.width - (2 * inset) + iconheight) + 10); conditionsframe.origin.x = iconframe.origin.x + (iconheight + 10);最后就是設(shè)置當(dāng)前view為你的table header,構(gòu)建每一個(gè)顯示氣象數(shù)據(jù)的標(biāo)簽,并添加一個(gè)天氣圖標(biāo)的圖像視圖。代碼如下:uiview *header = uiview alloc initwithframe:headerframe;header.backgroundcolor = uicolor clearcolor;self.tableview.tableheaderv

43、iew = header; uilabel *temperaturelabel = uilabel alloc initwithframe:temperatureframe; temperaturelabel.backgroundcolor = uicolor clearcolor;temperaturelabel.textcolor = uicolor whitecolor; temperaturelabel.text = 0;temperaturelabel.font = uifont fontwithname:helveticaneue-ultralight size:120; head

44、er addsubview:temperaturelabel; uilabel *hilolabel = uilabel alloc initwithframe:hiloframe; hilolabel.backgroundcolor = uicolor clearcolor; hilolabel.textcolor = uicolor whitecolor; hilolabel.text = 0 / 0; hilolabel.font = uifont fontwithname:helveticaneue-light size:28;header addsubview:hilolabel;

45、uilabel *citylabel = uilabel alloc initwithframe:cgrectmake(0, 20, self.view.bounds.size.width, 30);citylabel.backgroundcolor = uicolor clearcolor;citylabel.textcolor = uicolor whitecolor;citylabel.text = loading.; citylabel.font = uifont fontwithname:helveticaneue-light size:18;citylabel.textalignm

46、ent = nstextalignmentcenter;header addsubview:citylabel; uilabel *conditionslabel = uilabel alloc initwithframe:conditionsframe; conditionslabel.backgroundcolor = uicolor clearcolor; conditionslabel.font = uifont fontwithname:helveticaneue-light size:18; conditionslabel.textcolor = uicolor whitecolo

47、r; header addsubview:conditionslabel; uiimageview *iconview = uiimageview alloc initwithframe:iconframe; iconview.contentmode = uiviewcontentmodescaleaspectfit;iconview.backgroundcolor = uicolor clearcolor; header addsubview:iconview;構(gòu)建app并運(yùn)行,布局標(biāo)簽顯示效果如下圖,用手指輕輕推動(dòng)桌面,當(dāng)你滾動(dòng)它的時(shí)候,會(huì)有反彈效果。圖4.5 布局顯示效果圖4.3 獲取天

48、氣數(shù)據(jù) 從openweathermap的api拉取數(shù)據(jù)。 openweathermap是一個(gè)非常棒的服務(wù),旨在提供實(shí)時(shí),準(zhǔn)確,免費(fèi)的天氣數(shù)據(jù)給任何人。遵循以下基本步驟,來(lái)獲你設(shè)備的位置的氣象數(shù)據(jù):1.找到設(shè)備的位置。2.從api端下載json數(shù)據(jù)。3.映射json到wxconditions和wxdailyforecasts。4.告訴ui有新數(shù)據(jù)了。4.3.1 創(chuàng)建天氣模型創(chuàng)建天氣模型和數(shù)據(jù)管理類。單擊filenewfile并選cocoatouchobjective-c class。命名為wxclient并使其為nsobject的子類。這樣再做三次創(chuàng)建以下類:1.wxmanager作為nsobj

49、ect的子類。2.wxcondition作為mtlmodel的子類。3.wxdailyforecast作為wxcondition的子類。模型將使用mantle,打開wxcondition.h,修改接口。mtljsonserializing協(xié)議告訴mantle序列化該對(duì)象如何從json映射到objective-c的屬性,并從天氣狀況映射到圖像文件。接口代碼如下:interface wxcondition : mtlmodel property (nonatomic, strong) nsdate *date; property (nonatomic, strong) nsnumber *humi

50、dity; property (nonatomic, strong) nsnumber *temperature;property (nonatomic, strong) nsnumber *temphigh; property (nonatomic, strong) nsnumber *templow; property (nonatomic, strong) nsstring *locationname; property (nonatomic, strong) nsdate *sunrise; property (nonatomic, strong) nsdate *sunset; pr

51、operty (nonatomic, strong) nsstring *conditiondescription;property (nonatomic, strong) nsstring *condition; property (nonatomic, strong) nsnumber *windbearing; property (nonatomic, strong) nsnumber *windspeed; property (nonatomic, strong) nsstring *icon; -(nsstring *)imagename; end天氣狀況與圖像文件的連接,聲明獲取圖

52、像文件名的公有方法。打開wxcondition.m,添加如下方法:+ (nsdictionary *)imagemap static nsdictionary *_imagemap = nil; if (! _imagemap) _imagemap = 01d : weather-clear, 02d : weather-few, 03d : weather-few, 04d : weather-broken, 09d : weather-shower, 10d : weather-rain, 11d : weather-tstorm, 13d : weather-snow, 50d : we

53、ather-mist, 01n : weather-moon, 02n : weather-few-night, 03n : weather-few-night, 04n : weather-broken, 09n : weather-shower, 10n : weather-rain-night, 11n : weather-tstorm, 13n : weather-snow, 50n : weather-mist, ; return _imagemap; -(nsstring *)imagename return wxcondition imagemapself.icon;4.3.2 轉(zhuǎn)換

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論