版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 學(xué)科分類號 0810 本科學(xué)生畢業(yè)論文(設(shè)計) 題目(中文):基于ios影視信息手機客戶端的設(shè)計與實現(xiàn) (英文):the designing and implementation of phone movie imformation client module based on ios 姓 名 譚小清 學(xué) 號 200908002213 院 (系) 計算機與通信工程系 專業(yè)、年級 通信工程專業(yè) 2009級 指導(dǎo)老師 李文(講師) 2013年 4 月 18 日基于ios影視信息手機客戶端的設(shè)計與實現(xiàn)摘 要隨著信息網(wǎng)絡(luò)時代的快速發(fā)展,手機使用方式的多樣化,智能手機以及移動互聯(lián)網(wǎng)應(yīng)用的普及,不斷地改
2、變著人們的生活方式。一款好的應(yīng)用軟件成為手機必備,本設(shè)計主要基于ios平臺實現(xiàn)了iphone客戶端查看影視訊息的功能,通過此款應(yīng)用可以查看當前最新影片的簡介、評論、評分等等。本設(shè)計采用x-code開發(fā)工具,它具有可視化的編程界面、詳細的提示、以及完善的幫助文檔,軟件開發(fā)人員使用起來非常方便。本設(shè)計首先概要性地介紹了本文使用的關(guān)鍵技術(shù)、mvc模式等;然后給出模塊端總體分析與設(shè)計,包括系統(tǒng)的需求分析、系統(tǒng)設(shè)計要求、系統(tǒng)總體功能設(shè)計;其次用圖表加文字的方式對設(shè)計工作中的重點部分做出了詳細地闡述;最后具體描述了模塊的實現(xiàn)過程,并對關(guān)鍵技術(shù)的實現(xiàn),進行了代碼解析。【關(guān)鍵詞】影視信息;ios;iphone
3、;josn;服務(wù)器 the designing and implementation of phone movie imformation based on iosabstractwith the rapid development of information network era, the diversification of mobile phone use, intelligent mobile phone and the popularity of mobile internet applications, constantly changing people's way
4、of life. a good mobile phone application software become necessary, this design is mainly based on the ios platform of the iphone client to view video message function, through this application can view the latest movie introduction, review, scoring and so on.this design uses the x-code development
5、tools, it has the visual programming interface, detailed tips and perfect help documentation, it is very convenient to use for software developers. this paper firstly briefly introduces the keytechnologies and the mvc mode, secondly gives the total analysis and design of terminal module, including s
6、ystem requirements analysis, system design and system function design; next gives the figures and text of key parts design; at last this paper petends the concrete description of the module realization process, at the same time the key technique codes are provided and analized.【key words】movie imfor
7、mation;ios;iphone;json;sever目 錄1 緒 論11.1 本課題背景及意義11.2 國內(nèi)外研究現(xiàn)狀11.3 本課題的研究內(nèi)容21.4 本章小結(jié)32 ios、開發(fā)語言、環(huán)境以及所用技術(shù)介紹32.1 ios簡介32.2開發(fā)語言objective-c32.3 開發(fā)環(huán)境42.4 應(yīng)用程序框架以及設(shè)計模式52.5 第三方類庫72.6 本章小結(jié)83 功能模塊設(shè)計103.1 需求分析103.2系統(tǒng)模塊設(shè)計113.3 登錄模塊和手勢交互模塊流程圖設(shè)計113.3.1 用戶登錄模塊設(shè)計113.3.2 手勢交互設(shè)計123.3.3 多點觸摸交互設(shè)計123.4 詳細設(shè)計123.4.1 選擇的控件
8、133.4.2 界面的繪制143.4.3 數(shù)據(jù)輸入與傳遞143.4.4 數(shù)據(jù)的保存和顯示153.4.5 自動登錄153.5 本章小結(jié)164 功能模塊的具體實現(xiàn)174.1 數(shù)據(jù)請求174.2 網(wǎng)絡(luò)判斷174.3 數(shù)據(jù)的解析184.4 代理的實現(xiàn)194.5 算法描述與實現(xiàn)204.6 本章小結(jié)225 數(shù)據(jù)測試235.1 影視信息列表頁數(shù)據(jù)測試235.2 具體內(nèi)容頁數(shù)據(jù)測試245.3 評論頁及回復(fù)頁數(shù)據(jù)的測試255.4 登錄測試265.5 本章總結(jié)276 總結(jié)和展望286.1 總結(jié)286.2 展望28參考文獻29致 謝30291 緒 論隨著信息網(wǎng)絡(luò)時代的快速發(fā)展,手機使用方式的多樣化,智能手機以及移動
9、互聯(lián)網(wǎng)應(yīng)用的普及,不斷地改變著人們的生活方式。一款好的應(yīng)用軟件成為手機必備,本設(shè)計主要基于ios平臺實現(xiàn)了iphone客戶端查看影視訊息的功能,通過此款應(yīng)用可以查看當前最新影片的簡介、評論、評分等等。本設(shè)計采用x-code開發(fā)工具,它具有可視化的編程界面、詳細的提示、以及完善的幫助文檔,軟件開發(fā)人員使用起來非常方便。本設(shè)計首先概要性地介紹了本文使用的關(guān)鍵技術(shù)、mvc模式等;然后給出模塊端總體分析與設(shè)計,包括系統(tǒng)的需求分析、系統(tǒng)設(shè)計要求、系統(tǒng)總體功能設(shè)計;其次用圖表加文字的方式對設(shè)計工作中的重點部分做出了詳細地闡述;最后具體描述了模塊的實現(xiàn)過程,并對關(guān)鍵技術(shù)的實現(xiàn),進行了代碼解析。1.1 課題背
10、景及意義 當今社會,手機已經(jīng)成為人們生活必不可少的一部分,而隨著科技的進步,手機已經(jīng)不再僅僅是只是一個簡單的通話工具了,手機日趨于智能化、定制化、網(wǎng)絡(luò)化、娛樂多媒體化、安全性。伴隨著3g技術(shù)的日益成熟和3g手機的普及,手機網(wǎng)絡(luò)化更是成為引人注目的焦點,移動互聯(lián)網(wǎng)已經(jīng)成為未來發(fā)展的一個主流趨勢為業(yè)界所認可,手機作為人們使用最廣泛的移動信息終端在未來移動互聯(lián)網(wǎng)中地位舉足輕重。未來手機將成為最主要的移動互聯(lián)網(wǎng)的使用終端,以后在移動互聯(lián)網(wǎng)實現(xiàn)的包羅萬象的服務(wù)都會以手機為載體。在此基礎(chǔ)上,以手機作為客戶端的網(wǎng)絡(luò)應(yīng)用程序開發(fā),引起越來越多人的關(guān)注。iphone手機軟件開發(fā)代表了未來開發(fā)領(lǐng)域的新方向,隨著i
11、phone應(yīng)用需求的增加,只要iphone手機軟件開發(fā)應(yīng)用夠創(chuàng)意、夠?qū)嵱茫湍軌颢@得豐厚的回報全球越來越多的開發(fā)者們投身其中,中國的iphone手機軟件開發(fā)者也不甘心置身局外,由此看來iphone軟件業(yè)的發(fā)展形勢非常樂觀,但是由于語言方面的限制,在中國,iphone的軟件開發(fā)工作還處于緩慢上升階段,這意味著市場非常龐大,完全有上升和提高的空間,并且,隨著人們生活節(jié)奏的提高,更加注重跟上時代腳步,完全不滿足于現(xiàn)在獲取影訊的方式,這無疑對信息的傳播方式提出了更高的要求。1.2 國內(nèi)外的研究現(xiàn)狀手機與互聯(lián)網(wǎng)的融合形成的移動互聯(lián)網(wǎng)業(yè)務(wù)是與傳統(tǒng)互聯(lián)網(wǎng)以及傳統(tǒng)移動通信業(yè)務(wù)完全不同的新型業(yè)務(wù),移動互聯(lián)網(wǎng)催生
12、的新型需求日益成為傳統(tǒng)it與通信巨頭的藍海。隨著社會的不斷發(fā)展,各種各樣的手機軟件參與了人類的活動和社會活動,因此改善人和人之間的關(guān)系,使人對人的交流更為廣泛。還可以促進大腦智力的發(fā)展,讓人們的思維更活躍?,F(xiàn)今,人類己進入了信息化網(wǎng)絡(luò)3g時代,手機的應(yīng)用范圍越來越廣泛。根據(jù)摩根士丹利的一份報告,未來5年移動互聯(lián)網(wǎng)的人數(shù)將超過傳統(tǒng)互聯(lián)網(wǎng)。移動互聯(lián)網(wǎng)是一塊巨大的金礦等待開采。iphone是蘋果公司推出的一款手機平臺,其特點是封閉平臺,由蘋果推出統(tǒng)一api,編程語言采用object-c,c語言的編程效率還是相當高。目前蘋果的iphone已經(jīng)取得很大成功,其推出的軟件商店模式也使得開發(fā)者大量參與進來,
13、極大豐富了iphone的功能,也使開發(fā)者有了致富機會,而在中國,移動、電信、聯(lián)通紛紛推出自己的應(yīng)用程序商店,并不只為效仿蘋果app store的商業(yè)模式,更多的是看到豐富的應(yīng)用程序在未來將成為用戶選擇運營商和手機平臺的決定因素;而對于開發(fā)者來說,手機軟件商店開發(fā)者分成模式將 成為他們的另一個金礦。北京時間2012年3月15日下午消息,蘋果周三發(fā)布的文件顯示,app store應(yīng)用商店每周收到的iphone和ipad應(yīng)用上架申請超過2.6萬次,全年約為130萬次2。自從2008年上線以來,app store收到的應(yīng)用申請數(shù)量已經(jīng)大幅增長。蘋果2009年向美國聯(lián)邦通訊委員會(fcc)透露,每周收到
14、的申請為8500次,2010年達到1.5萬次,約為現(xiàn)在的一半3。事實上,自誕生以來,蘋果應(yīng)用商店幾乎是以幾何級的規(guī)模增長。蘋果應(yīng)用商店2008年7月上線,僅用了2個月的時間就突破了1億次下載。去年10月,app store應(yīng)用商店的下載次數(shù)超過180億次。不過光鮮亮麗的數(shù)字背后,卻也隱含著高風(fēng)險、高成本的危機,iphone 最大的問題,這是一個封閉的系統(tǒng),代碼的不開源,從操作系統(tǒng)到開發(fā)語言的獨具一幟,這注定了開發(fā)人員不多,相對于其他操作平臺開發(fā)人員漸現(xiàn)后勁不足。1.3 本論文的研究內(nèi)容本文深入分析了課題的背景及意義、iphone應(yīng)用的現(xiàn)狀和發(fā)展趨勢。在前人的研究基礎(chǔ)上對影視信息手機客戶端進行了
15、重構(gòu)和設(shè)計。本軟件在通過對服務(wù)器數(shù)據(jù)的解析,實現(xiàn)了各個對全國影訊的展現(xiàn),實現(xiàn)對影片簡介、評分、評論等等的查看功能。詳細功能的設(shè)計和實現(xiàn)。1.4 本章小結(jié)本章中介紹了iphone軟件開發(fā)的課題背景及意義,闡明了該應(yīng)用軟件開發(fā)的國內(nèi)外研究現(xiàn)狀,描述了本論文的研究內(nèi)容及本論文的結(jié)構(gòu)。2 ios、開發(fā)語言、環(huán)境以及所用技術(shù)介紹2.1 ios簡介ios最初是設(shè)計在iphone上的操作系統(tǒng),蘋果公司于2007年1月9日的macworld大會上公布了這個系統(tǒng),并命名為iphone os,但隨著此系統(tǒng)在ipod touch、ipad以及apple tv等蘋果產(chǎn)品上的廣泛應(yīng)用,蘋果公司于2010年6月7日wwd
16、c大會上將其改名為ios。據(jù)canalys的數(shù)據(jù)顯示, 截止到2011年11月,ios占據(jù)了全球智能手機系統(tǒng)市場份額的30%,在美國的市場占有率更是達到了43%。隨著andriod開源操作系統(tǒng)的異軍突起以及windows phone的發(fā)力,ios市場份額正被一點點的蠶食,但ios設(shè)備的利潤率高的驚人,以智能手機為例,iphone的利潤額占到整個智能手機利潤額的80%,受益于此,蘋果的市值也達到了5000億美元。ios操作采用的是多點觸控直接操作,控制方法包括滑動、輕觸屏幕和圖標及按鍵。操作有:滑動、輕按、縮小及放大。此外,ios移動設(shè)備中還內(nèi)置了加速器,使得旋轉(zhuǎn)ios設(shè)備時,界面也可以得到旋轉(zhuǎn)
17、,這也使得iphone等便攜設(shè)備更便于使用。自3gs開始,iphone裝備有陀螺儀,這使得iphone有了重力感應(yīng),游戲效果更加的突出。屏幕的下方是home鍵,點按回到主界面。底部是dock,可安放四個使用者最經(jīng)常使用的程序的圖標。屏幕最上方是狀態(tài)欄,顯示一些有關(guān)資訊:如時間、電池電量和訊號強度等。其余的屏幕用于顯示當前的應(yīng)用程序。啟動程序,只需點按該程序的圖標,點按屏幕下方的home鍵即退出應(yīng)用程序。在iphone 3.0及后續(xù)版本中,及時應(yīng)用程序退出,當?shù)谌杰浖盏搅诵碌挠嵪r,蘋果公司的服務(wù)器將把這些通知推送至iphone或ipod touch上(不管它是否正在運行中)。2.2開發(fā)語言
18、objective-cobjective-c, 也通常被寫作objc,是一種擴充c的面向?qū)ο缶幊陶Z言,主要用于mac os x和gnustep這兩個使用openstep標準的系統(tǒng)。objective-c最開始并不支持垃圾回收,因為垃圾回收有漫長的“死亡時間”, 會導(dǎo)致整個系統(tǒng)失去功用。但自xcode4.0開始,支持自動釋放,也就是arc (automatic reference counting)機制,不需要用戶手動去release每一個對象,編譯器會在編譯期間自動幫你添加那些以前你經(jīng)常寫的nsobject release。objective-c和c+有很多不同之處,objective-c不支
19、持運算符重載,也只允許對象單繼承,但其引入的categories和protocols可以提供很多多重繼承的好處。很多常見的編譯時的性能優(yōu)化方法都不能應(yīng)用于obj-c,比如內(nèi)聯(lián)函數(shù)。2.3開發(fā)環(huán)境(1)xcode 工具xcode是apple的開發(fā)工具套件,支持項目管理、編輯代碼、構(gòu)建可執(zhí)行程序、代碼級調(diào)試、代碼的版本管理、性能調(diào)優(yōu)等等。這個套件的核心是xcode應(yīng)用本身,它提供了基本的源代碼開發(fā)環(huán)境。開發(fā)者可以在xcode中創(chuàng)建新項目,開始新的iphone應(yīng)用程序。一個項目管理應(yīng)用程序所有的信息,包含源代碼、編譯設(shè)置和把所有文件整合到一起的編譯規(guī)則。xcode項目的核心是項目窗口,開發(fā)者可以通過
20、該窗口快速訪問應(yīng)用程序的所有關(guān)鍵元素。組和文件列表管理項目文件,包括了源代碼文件和編譯后的目標文件。工具欄提供了常用的工具和命令,詳細資料面板用來設(shè)置項目的工作區(qū)域,項目窗口的其他部分可以提供更多的項目信息。² 項目窗口² 組和文件列表² 詳細資料面板xcode有一個高級的代碼編輯器,它提供代碼補全、語法高亮、代碼隱藏(臨時隱藏代碼塊),還有錯誤、警告和說明的內(nèi)置注釋。xcode環(huán)境中提供了一些默認的設(shè)置和用戶環(huán)境設(shè)置。并且需要立即幫助文檔,xcode搜索助手提供了上下文文檔,同時開發(fā)者可以在幫助文檔窗口中瀏覽和搜索相關(guān)信息。(2)simulator模擬器ipho
21、ne simulator是iphone sdk中頗為有用的一個工具,無需使用實際的iphone/ipod touch就可以測試應(yīng)用程序。通常不需要直接啟動iphone simulator它在xcode運行(或是調(diào)試)應(yīng)用程序時會自動啟動。xcode會自動將應(yīng)用程序安裝到iphone simulator上。開發(fā)者在xcode創(chuàng)建應(yīng)用程序,在編譯時需要選擇iphone模擬器還有設(shè)備。iphone模擬器提供了一個本地的應(yīng)用測試環(huán)境。在iphone模擬器通過測試后,可以用xcode編譯并運行到與計算機相連接的iphone上。在iphone上的運行提供了最全面的測試環(huán)境,xcode可以在設(shè)備測試時用內(nèi)置
22、的調(diào)試器跟蹤代碼。(3)interface builder在interface builder 中創(chuàng)建的nib文件包含了uikit需要在應(yīng)用中創(chuàng)建相同對象的所有信息。在運行時加載nib文件,創(chuàng)建它們的運行時版本,設(shè)置與interface builder中相同的屬性。它也使用連接信息,建立新建對象和應(yīng)用程序中其他對象之間的聯(lián)系。連接信息提供了代碼與nib文件的對象連接關(guān)系,同時也提供了對象與用戶動作之間的聯(lián)系。總的來說,在創(chuàng)建應(yīng)用程序圖形用戶界面時,使用interface builder可以節(jié)約大量時間。interface builder擺脫了手工編寫代碼創(chuàng)建、設(shè)置和定位界面對象,并且inter
23、face builder是一個可視的編輯器,開發(fā)者可以清楚地看到在運行時界面效果。(4)instruments為了確保軟件具有最佳的用戶體驗,instruments可以分析iphone應(yīng)用在模擬器或真實設(shè)備上運行時的性能。instruments將用時間軸圖表的形式表現(xiàn)運行應(yīng)用程序時的各種數(shù)據(jù),包括內(nèi)存消耗、磁盤活動、網(wǎng)絡(luò)活動和圖形表現(xiàn)等。時間軸視圖表征了不同類型的應(yīng)用程序信息,可以收集應(yīng)用程序的全部行為,而不是某個特定區(qū)域的行為。除時間軸視圖外,instruments也提供工具幫助開發(fā)者分析運行時應(yīng)用程序的行為。例如,instruments窗口可以保存多個運行時數(shù)據(jù),開發(fā)者可以觀察應(yīng)用程序的行
24、為哪些需要改進或哪些需要重寫,開發(fā)者可以保存數(shù)據(jù)到instruments文檔中,也可以隨時打開這些數(shù)據(jù)。2.4應(yīng)用程序框架以及設(shè)計模式mvc (模型視圖控制器)是xerox parc在八十年代為編程語言smalltalk80發(fā)明的一種軟件設(shè)計模式,至今已被廣泛使用5。最近幾年被推薦為sun公司j2ee平臺的設(shè)計模式,并且受到越來越多的使用 ios 和 php 的開發(fā)者的歡迎。mvc是用于拆分gui應(yīng)用程序的邏輯方法。mvc是一個設(shè)計模式,它強制性的使應(yīng)用程序的輸入、處理和輸出分開。 mvc 模型將所有功能能劃分為3種,如圖2-1所示。(1)模型模型對象代表特別的知識和專業(yè)技能,它們負責(zé)保有應(yīng)用
25、程序的數(shù)據(jù)和定義操作數(shù)據(jù)的邏輯。被模型返回的數(shù)據(jù)是中立的,就是說模型與數(shù)據(jù)格式無關(guān),這樣一個模型能為多個視圖提供數(shù)據(jù)由于應(yīng)用于模型的代碼只需寫一次就可以被多個視圖重用,所以減少了代碼的重復(fù)性。(2)視圖視圖對象知道如何顯示應(yīng)用程序的模型數(shù)據(jù),而且可能允許用戶對其進行編輯。視圖是用戶看到并與之交互的界面。如何處理應(yīng)用程序的界面變得越來越有挑戰(zhàn)性。mvc一個大的好處是它能為你的應(yīng)用程序處理很多不同的視圖。在視圖中其實沒有真正的處理發(fā)生,不管這些數(shù)據(jù)是聯(lián)機存儲的還是一個雇員列表,作為視圖來講,它只是作為一種輸出數(shù)據(jù)并允許用戶操縱的方式。圖2-1 mvc模式設(shè)計(3)控制器控制器對象是應(yīng)用程序的視圖對
26、象和模型對象之間的協(xié)調(diào)者??刂破鹘邮苡脩舻妮斎氩⒄{(diào)用模型和視圖去完成用戶的需求??刂破鞅旧聿惠敵鋈魏螙|西和做任何處理。它只是接收請求并決定調(diào)用哪個模型構(gòu)件去處理請求,然后用確定用哪個視圖來顯示模型處理返回的數(shù)據(jù)。mvc最重要的一點是多個視圖能共享一個模型,正如我所提及的,現(xiàn)在需要用越來越多的方式來訪問你的應(yīng)用程序。對此,其中一個解決之道是使用mvc,無論你的用戶想要flash界面或是wap界面;用一個模型就能處理它們。由于你已經(jīng)將數(shù)據(jù)和業(yè)務(wù)規(guī)則從表示層分開,所以你可以最大化的重用你的代碼了。由于模型返回的數(shù)據(jù)沒有進行格式化,所以同樣的構(gòu)件能被不同界面使用。例如,很多數(shù)據(jù)可能用html來表示,但
27、是它們也有可能要用macromedia flash和wap來表示。模型也有狀態(tài)管理和數(shù)據(jù)持久性處理的功能。因為模型是自包含的,并且與控制器和視圖相分離,所以很容易改變你的應(yīng)用程序的數(shù)據(jù)層和業(yè)務(wù)規(guī)則。如果你想把你的數(shù)據(jù)庫從mysql移植到oracle,或者改變你的基于rdbms數(shù)據(jù)源到ldap,只需改變你的模型即可。一旦你正確的實現(xiàn)了模型,不管你的數(shù)據(jù)來自數(shù)據(jù)庫或是ldap服務(wù)器,視圖將會正確的顯示它們。由于運用mvc的應(yīng)用程序的三個部件是相互對立,改變其中一個不會影響其它兩個,所以依據(jù)這種設(shè)計思想你能構(gòu)造良好的松偶合的構(gòu)件。對我來說,控制器的也提供了一個好處,就是可以使用控制器來聯(lián)接不同的模型
28、和視圖去完成用戶的需求,這樣控制器可以為構(gòu)造應(yīng)用程序提供強有力的手段。給定一些可重用的模型和視圖,控制器可以根據(jù)用戶的需求選擇模型進行處理,然后選擇視圖將處理結(jié)果顯示給用戶。設(shè)計模式(1)工廠模式類工廠方法的實現(xiàn)是為了向客戶提供方便,它們將分配和初始化合在一個步驟中, 返回被創(chuàng)建的對象,并進行自動釋放處理6。工廠方法可能不僅僅為了方便使用。它們不但可以將分配和初始化合在一起,還可以為初始化過程提供對象的分配信息。(2)單利模式foundation 和 application kit 框架中的一些類只允許創(chuàng)建單件對象,即這些類在當前進程中的唯一實例。舉例來說,nsfilemanager 和nsw
29、orkspace 類在使用時都是基于進程進行單件對象的實例化。當向這些類請求實例的時候,它們會向您傳遞單一實例的一個引用,如果該實例還不存在,則首先進行實例的分配 和初始化。 單件對象充當控制中心的角色,負責(zé)指引或協(xié)調(diào)類的各種服務(wù)。(3)觀察者模式在ios開發(fā)中,通知機制依靠觀察者模式得以實現(xiàn)。通知機制是一個中心對象為所有觀察者提供變更通知,觀察者模式中subject對象,又可稱目標對象,是通知的發(fā)布者,又是被觀察者。提供注冊和取消注冊的方法;observer對象,又可稱為觀察者,是通知的訂閱者。observer類中,相識subject,以達到能夠接收通知。2.5 第三方類庫(1)通信協(xié)議請求
30、asihttprequest使用ios sdk中的http網(wǎng)絡(luò)請求api,相當?shù)膹?fù)雜,調(diào)用很繁瑣,asihttprequest就是一個對cfnetwork api進行了封裝,并且使用起來非常簡單的一套api,用objective-c編寫,可以很好的應(yīng)用在mac os x系統(tǒng)和ios平臺的應(yīng)用程序中。asihttprequest適用于基本的http請求,和基于rest的服務(wù)之間的交互。(2)touchjson解析 cocos2d for iphone是開源2d引擎中特性最完備的一個。 touchjson的使用屬于不想在一個比較完全的o
31、bjective c環(huán)境中添加c+代碼,所以不使用jsoncpp來配合cocos2d,何況cocos2d的模板工程中本來就帶有touchjson了。另外,因為touchjson用objective c完成,解析后也是個nsdictionary的對象所以與objecitve c的對象組合使用會更加自然一些。 (3)sdwebimage圖片庫是一個支持網(wǎng)絡(luò)圖像遠程異步下載的uiimageview的類別。具有緩存管理、異步下載、同一個url下載次數(shù)控制和優(yōu)化等特征。2.6 本章小結(jié)本章主要是深入研究了本系統(tǒng)的開發(fā)工具xcode,介紹了一些編輯器模擬器的使用方法和技巧。然后介紹系統(tǒng)mvc框架,指出框架
32、在項目中的應(yīng)用,接著分別介紹了本系統(tǒng)用到的設(shè)計模式和第三方庫。3 功能模塊設(shè)計3.1 需求分析(1)首頁:頁面主體內(nèi)容構(gòu)成:大頭圖、圖文列表。而在大頭圖中由圖片+影評標題構(gòu)成。圖文列表中,單條影評的展示方式:頭像+用戶名+評分影片+評分分值+標題+摘要+影片海報。圖文列表排序規(guī)則:同web端。先首頁影評,再新片熱評列表。圖文列表處:用戶初次進入,默認顯示20條,在頂部的時候向下拖動,刷新當前頁面,在頁面底部向上拖動展開顯示更多20條。 手指在屏幕上下滑動,可以查看影視頻道的所有內(nèi)容。點擊頭圖,進入頭圖內(nèi)容頁。頁面自右向左顯示。點擊單條圖文列表影評,該條處于選中的狀態(tài),進入影評內(nèi)容頁。頁面自右向
33、左顯示。頂部導(dǎo)航處:中間顯示頻道名稱:時光網(wǎng)影評。底部導(dǎo)航處:依次顯示:首頁、新聞、影評、電影院、更多。選中效果在“影評”。(2)具體內(nèi)容頁頁面主體內(nèi)容構(gòu)成:頭像、標題、用戶名、評分電影、評分分值、發(fā)表時間、海報、正文。頂部導(dǎo)航處:中間顯示頻道名稱:時光網(wǎng)影評。左側(cè)顯示返回按鈕。底部操作區(qū)處:依次顯示:評論icon(有評論的icon右下角顯示評論數(shù)量)、收藏、分享。其中,收藏和分享,未登錄用戶點擊進入登錄頁。頁面自下向上移入。點擊縮略圖,浮層顯示大圖。頁面可隨手指上下滑動。手指點擊屏幕的非縮略圖區(qū)域,全屏顯示頁面主體內(nèi)容,再點擊,回到正常顯示。支持多點觸摸,字體變大變小,縮略圖大小不變。用戶左
34、右滑動可切換上一篇/下一篇電影,點擊評論icon進入查看評論頁,頁面自右向左顯示。(3)查看評論頁頁面主體內(nèi)容構(gòu)成:圖文列表。圖文列表中,單條影評的展示方式:頭像+用戶名+微影評。圖文列表處:用戶初次進入,默認顯示20條,在頂部的時候向下拖動,刷新當前頁面,在頁面底部向上拖動展開顯示更多20條。 手指在屏幕上下滑動,可以查看影評頻道的所有內(nèi)容。點擊表格,彈出回復(fù)按鈕、進入發(fā)表評論頁面,頁面自右向左顯示。完成時將以另外一種形式顯示于回復(fù)當前人表格下,頁面自右向左顯示。頂部導(dǎo)航處:中間顯示頻道名稱:查看評論。左邊顯示返回按鈕,點擊返回按鈕返回評論頁內(nèi)容,頁面自右向左顯示。底部導(dǎo)航處:顯示寫評論導(dǎo)航
35、條編輯區(qū),點擊編輯區(qū)同樣進入發(fā)表評論頁面,頁面自右向左顯示完成時將以同種形式顯示于表格最下方,頁面自右向左顯示。(4)發(fā)表評論頁頁面主體內(nèi)容構(gòu)成:編輯區(qū)。圖文列表處:用戶初次進入,編輯區(qū)顯示默認文字,且關(guān)聯(lián)鍵盤顯示。點擊編輯區(qū),默認文字消失,進入編輯狀態(tài)。頂部導(dǎo)航處:中間顯示頻道名稱:發(fā)表評論。左邊顯示取消按鈕,點擊取消按鈕不保存評論內(nèi)容回查看評論頁,頁面自右向左顯示。左邊顯示提交按鈕,點擊提交按鈕保存評論內(nèi)容回查看評論頁,頁面自右向左顯示。3.2系統(tǒng)模塊設(shè)計首頁具體內(nèi)容頁轉(zhuǎn)發(fā)評論收藏全屏 分享寫評論回復(fù)程序的整體功能模塊,里面包含數(shù)據(jù)判斷、功能選擇、輸出模塊等。數(shù)據(jù)判斷是從cookie中取值
36、。具體的模塊設(shè)計如圖3-1所示。圖 3-1 設(shè)計結(jié)構(gòu)圖3.3 登錄模塊和手勢交互模塊流程圖設(shè)計3.3.1 用戶登錄模塊設(shè)計具體內(nèi)容頁中,需要判斷是否用戶已經(jīng)登錄,如果登錄則可以則從cookie中取得用戶信息,將評論內(nèi)容直接以用戶名發(fā)送出去,而未登錄時只能匿名發(fā)表,而回復(fù)別人的評論則必須登錄,流程圖如圖3-2所示。用戶登錄cookie中是否有值登錄成功進行用戶評論和回復(fù)ny圖3-2 登錄判斷流程圖3.3.2 手勢交互設(shè)計手勢9(gesture)是指從用一個或多個手指接觸屏幕開始,直到手指離開屏幕為止所發(fā)生的所有事件。由于手勢是在事件之內(nèi)傳遞到系統(tǒng)的,然后事件會傳遞到響應(yīng)者鏈(responder
37、chain)。如果第一個響應(yīng)者不處理某個特殊事件(如某個手勢),則它會將該事件傳遞到響應(yīng)者鏈的下一級。如果該鏈中的下一個對象響應(yīng)此特殊事件,則它通常會處理該事件,這將停止該事件沿著響應(yīng)者鏈向前傳遞。如圖3-3所示。3.3.3 多點觸摸交互設(shè)計很明顯,觸摸(touch)是指手指放到iphone屏幕上,手勢中涉及的觸摸數(shù)量等于同時位于屏幕上的手指數(shù)量,當觸目數(shù)量為1在進行移動時,或觸目數(shù)量大于1時形成多點觸目,如圖3-4所示。3.4 詳細設(shè)計詳細設(shè)計是對整個程序的整體設(shè)計,它包含界面的設(shè)計、數(shù)據(jù)結(jié)構(gòu)的設(shè)計、功能過程的顯示等。開始第一響應(yīng)者是否響應(yīng)第n響應(yīng)者是結(jié)束 否是 否是否響應(yīng) 否圖3-3 手勢
38、響應(yīng)鏈流程圖觸摸開始單 擊移 動捏合或移動形成多點觸摸單指多指 圖3-4 多點觸摸結(jié)構(gòu)圖3.4.1 選擇的控件l uilabel顯示文字的控件,它能設(shè)置要顯示的文字的顏色,大小,格式等相關(guān)屬性。l uiimageview顯示圖片的控件,根據(jù)回來的圖片地址,能從緩沖里或者沙盒中選取要顯示的圖片,它能設(shè)置要顯示的圖片的顏色,大小,格式等相關(guān)屬性。l uitextview主要用來對文字的輸入,當響應(yīng)它時自動彈出鍵盤,一行輸入滿時可以自動換行。l uibutton在iphone上主要是一個按鈕,該按鈕能響應(yīng)用戶一切對其操作的單擊、雙擊、長按事件,可以對其設(shè)置響應(yīng)函數(shù)。l uitableview在iph
39、one上一個表格視圖是一維的,自頂向下的條目清單,可選的分為多個區(qū)域,區(qū)域?qū)嶋H上把清單變?yōu)槎S數(shù)據(jù)結(jié)構(gòu),每個區(qū)域有可變數(shù)目的條目,因此表格里某個指定的條目由它所在區(qū)域和所在區(qū)域的行(row)來決定。l uiwebview在iphone上用來顯示網(wǎng)站要顯示的信息,開發(fā)者可以重寫網(wǎng)頁數(shù)據(jù)的格式,也可以用js返回所要用到的數(shù)據(jù)。3.4.2 界面的繪制界面區(qū)域的視圖繪制較為簡單。只需要根據(jù)當前需求分析,來對每一個也頁面進行繪制。先生成一個控制器(uiviewcontroller),同時可以生成一個viewcontroller.xib然后將要用到的控件拖入相應(yīng)的位置,形成插座控件,待請求完成時加載數(shù)據(jù)。
40、如果沒有生成nib文件,則在viewcontroller.m中用代碼實現(xiàn)控件的生成,再從源視圖像位圖中選擇適當?shù)膮^(qū)域?qū)⑵涮砑拥絻?nèi)存位圖中,當所有這些圖像方塊都繪制到內(nèi)存位圖后,再一次性地將整體圖像從內(nèi)存位圖拷貝到屏幕去。繪制流程如圖3-5所示。3.4.3 數(shù)據(jù)輸入與傳遞該軟件通過用戶對界面的操作,實現(xiàn)數(shù)據(jù)的傳遞,而在此項目中當點擊影評頁首頁頭圖和列表時,保存一個當前點擊影評的id將及傳至影評詳情頁。而詳情頁則根據(jù)此id進行數(shù)據(jù)請求,將解析后的數(shù)據(jù)顯示到當前頁面,而在詳情頁中,點擊圖片用js導(dǎo)出圖片鏈接,將此鏈接對應(yīng)的圖片從緩存中取出,對其進行操作,而點擊詳情頁下部導(dǎo)航條時則從cookie中取取
41、用戶數(shù)據(jù),看是否登錄,然后根據(jù)登錄狀態(tài),進行邏輯分析和判斷。是否生成nib文件將控件加入xib中完 成yn在控制器中加入控件開始生成控制器圖3-5 界面繪制流程圖3.4.4 數(shù)據(jù)的保存和顯示前面實現(xiàn)的眾多功能都是圍繞著位置這一關(guān)鍵來運作的,數(shù)據(jù)的保存分為兩種,一種是臨時緩存,臨時緩存很簡單,sdk封裝好的模塊我們可以直接拿來用,在數(shù)據(jù)請求完成時可以直接保存到緩存區(qū)。另一種則是保存到沙盒路徑既永久保存,此時根據(jù)用戶名在沙盒中創(chuàng)建一個文件,用單利模式創(chuàng)建一個用戶數(shù)據(jù)模型,每次要用時從數(shù)據(jù)模型中讀取數(shù)據(jù),當修改用戶信息時則對其進行保存。而數(shù)據(jù)的顯示我們只需將從文件中讀到的數(shù)據(jù),或者是從緩存中取到的數(shù)
42、據(jù)加到相應(yīng)的控件數(shù)據(jù)上,控件將顯示出我們所設(shè)計的效果。3.4.5 自動登錄自動登錄是由軟件自動完成的。用戶在上次登錄程序中登錄了賬戶而沒有對其進行注銷而直接退出程序,這時程序會自動將未退出的賬號記錄下來保存在本地,而當下次啟動此應(yīng)用時,先從文件中去讀數(shù)據(jù),看上次用戶退出時是否處在登錄狀態(tài),若是將用戶名和密碼取出,自動請求登錄接口,完成自動登錄。3.5 本章小結(jié)本章主要是對各功能模塊的需求做了詳細的分析。接著劃分系統(tǒng)的模塊,對用戶登錄做了詳細的分析,設(shè)計智能手機的多點觸摸,對系統(tǒng)的各個功能頁面進行詳細構(gòu)造,完成ui圖的繪制及數(shù)據(jù)的顯示及保存設(shè)置,完成自動登錄的邏輯設(shè)計。4 功能模塊的具體實現(xiàn)4.
43、1 數(shù)據(jù)請求 asihttpreques是一款極其強勁的http訪問開源項目。而數(shù)據(jù)的請求可以分為同步和異步請求,同步意為著線程阻塞,在主線程中使用此方法會使應(yīng)用停住而不響應(yīng)任何用戶事件10。所以,在應(yīng)用程序設(shè)計時,大多被用在專門的子線程增加用戶體驗,或用異步請求代替。異步請求更加精準豐富的控制。異步請求的好處是不阻塞當前線程,但相對于同步請求略為復(fù)雜,至少要添加兩個回調(diào)方法來獲取異步事件不過可以設(shè)置在隊列中,同步請求的連接數(shù)。往隊列里添加的請求實例數(shù)大于maxconcurrentoperationcount時,請求實例將被置為等待,直到前面至少有一個請求完成并出列才被放到隊列里執(zhí)行。 - (
44、ibaction)graburlinthebackground:(id)sender if (!self queue) self setqueue:nsoperationqueue alloc init autorelease; nsurl *url = nsurl urlwithstring:"http:/allseeing-"asihttprequest *request = asihttprequ
45、est requestwithurl:url; request setdelegate:self;request setdidfinishselector:selector(requestdone:); request setdidfailselector:selector(requestwentwrong:); self queue addoperation:request; 4.2 網(wǎng)絡(luò)判斷網(wǎng)絡(luò)判斷是指用戶能否連接到網(wǎng)絡(luò)進行請求數(shù)據(jù),為了保證數(shù)據(jù)的可靠性,需要對用戶進行網(wǎng)絡(luò)連接失敗和超時進行判斷,當進
46、行數(shù)據(jù)請求時,如果請求失敗,服務(wù)器會返回一個錯誤信息error,而ios-sdk對請求這一塊進行了很好的封裝,返回一個結(jié)構(gòu)體,而其中的1則代表網(wǎng)絡(luò)連接失敗,2則是連接30秒超時,代碼如下:#define net_error_connet_failure "網(wǎng)絡(luò)連接失敗,請檢查網(wǎng)絡(luò)"#define net_error_time_out "網(wǎng)絡(luò)連接超時"- (void)reque requestwentwrong:(asihttprequest *)requestnserror* error = _httprequest.error;self notifyd
47、elegatewith:nil anderror:error;nsinteger code = error.code;switch (code) case asiconnectionfailureerrortype: /1 commutils showmessagewithstr:net_error_connet_failure;break;case asirequesttimedouterrortype: /2commutils showmessagewithstr: net_error_time_out;break;default: break;4.3 數(shù)據(jù)的解析用戶請求回來的數(shù)據(jù)都是js
48、on字符串,json可以表示數(shù)組和復(fù)雜的對象,而不僅僅是鍵和值的簡單列表。json 可以將 javascript 對象中表示的一組數(shù)據(jù)轉(zhuǎn)換為字符串,然后就可以在函數(shù)之間輕松地傳遞這個字符串,或者在異步應(yīng)用程序中將字符串從 web 客戶機傳遞給服務(wù)器端程序,用戶只有經(jīng)過解析后才能使用,關(guān)鍵代碼如下:#define release_safely(_pointer)if(_pointer)_pointer release;_pointer = nil; /安全釋放數(shù)據(jù)模型解析;- (void) requestdone :(asihttprequest *)requestnserror* error
49、= nil;nsdata* data = _httprequest.responsedata; /請求回來數(shù)據(jù)cjsondeserializer* jsonparser = cjsondeserializer deserializer; nsarray* reviewjsonarray = jsonparser deserializeasarray:data error:&error;if (error)return;nsmutablearray* resp = nsmutablearray alloc init;for(nsdictionary* reviewdict in revi
50、ewjsonarray)treview* review = treview alloc init; review.rating = reviewdict objectforkey:"rating" doublevalue;review.id = reviewdict objectforkey:kjson_id integervalue;review.image = reviewdict objectforkey:kjson_image;review.nickname = reviewdict objectforkey:kjson_nickname;review.userim
51、age = reviewdict objectforkey:kjson_userimage;review.title = reviewdict objectforkey:kjson_title;review.summary = reviewdict objectforkey:kjson_summary;release_safely(review);self notifydelegatewith:resp anderror:error;release_safely(resp);4.4 代理的實現(xiàn) 由于uiwebview繼承uiscrollview,而uiscrollview無法捕獲uitouch
52、事件,故當觸摸uiwebview時,系統(tǒng)將沒有任何反應(yīng),無法實現(xiàn)全屏,用代理注冊手勢,用來捕獲事件。uigesturerecognizerdelegate/注冊手勢/將手勢加入要操作的控件 uitapgesturerecognizer* singletap = uitapgesturerecognizer alloc initwithtarget:self action:selector(display); _contentweb addgesturerecognize
53、r:singletap; /這個可以加到任何控件上singletap.delegate = self; singletap.cancelstouchesinview = no; singletap release;- (bool)gesturerecognizer:(uigesturerecognizer *)gesturerecognizer shouldrecognizesimultaneouslywithgesturerecog
54、nizer:(uigesturerecognizer *)othergesturerecognizer return yes4.5 算法描述與實現(xiàn)quartz 是 cocoa 全部圖表算法11的核心。它是圖表算法數(shù)據(jù)結(jié)構(gòu)和畫圖的基礎(chǔ),也是 mac os x 的窗口服務(wù)器。cocoa 圖表算法的基本概念,包括:矩形,點,顏色和系統(tǒng)坐標。(1)矩形和點在 quartz 的所有繪圖包括矩形。在 cocoa,你可以用 nsrect 結(jié)構(gòu)去描述一個矩形的位置和尺寸:typedef struct nspoint origin; /
55、起點nssize size; /長寬 nsrect;原點是畫矩形開始的地方。點由 nspoin
56、t 來描述,有坐標 x 和 y:typedef struct float x; /橫坐標float y; /縱坐標 nspoint;矩形的大小區(qū)域是一個 nssize,包含了長和寬。沒有辦法去描述一個 nssize 實例,它必須作為矩形的一部分來使用。typedef struct float width; /寬度float height; /高度 nssize;cocoa 里畫圖的區(qū)域被作為一個矩形。quartz 調(diào)用這個畫圖區(qū)“bounds”。一個 nspoint 點就能描繪 bounds 視圖的任何位置。標準的 quartz 系統(tǒng)坐標是基于 pdf 模式,也就是說畫圖要從左下角開始,如圖4-1所示。圖 4-1 坐標系的描述圖矩形和點比較的一些函數(shù)nsequalrects /矩形是否相同nsequalpoints /原點是否相同nsequalsizes /大小是否相同nscontainsrect /是否包含另一個矩形nsintersectsrect /兩矩形重疊的部分nspointinrect /點是否在當前矩形中nsmouseinrect
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年家具制造與供應(yīng)協(xié)議
- 企業(yè)課件教學(xué)
- 2024奶牛養(yǎng)殖企業(yè)環(huán)保責(zé)任合同
- 2024年建筑工程裝飾分包合同文本
- 2024年工程建設(shè)項目中介服務(wù)簡約合同
- 2024蘇州汽車質(zhì)押借款合同范本
- 公司行政部門經(jīng)理工作總結(jié)
- 企業(yè)迎新晚會主持詞(6篇)
- 現(xiàn)代商務(wù)課件教學(xué)課件
- 英語課件簡約教學(xué)課件
- 第19課《小站》課件(共18張)(五四學(xué)制)語文六年級上冊
- 高中期中考試成績分析主題班會課件
- 智慧醫(yī)療人工智能的應(yīng)用
- 行業(yè)變革下的專業(yè)知識更新與迭代
- 內(nèi)蒙古自治區(qū)2021-2022學(xué)年普通高中學(xué)業(yè)水平考試(高二會考)英語真題
- 《草船借箭》教學(xué)案例(5篇)
- 房屋租賃運營服務(wù)投標方案(技術(shù)方案)
- 第三章地圖數(shù)學(xué)基礎(chǔ)
- 人教部編版語文四年級上冊第四單元同步練習(xí)及答案
- 家長會課件:陪伴的家長會課件
- 植入式靜脈給藥裝置(輸液港)-中華護理學(xué)會團體標準2023
評論
0/150
提交評論