基于IOS影視信息手機客戶端的設計與實現_第1頁
基于IOS影視信息手機客戶端的設計與實現_第2頁
基于IOS影視信息手機客戶端的設計與實現_第3頁
基于IOS影視信息手機客戶端的設計與實現_第4頁
基于IOS影視信息手機客戶端的設計與實現_第5頁
已閱讀5頁,還剩55頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 學科分類號 0810 本科學生畢業論文(設計) 題目(中文):基于ios影視信息手機客戶端的設計與實現 (英文):the designing and implementation of phone movie imformation client module based on ios 姓 名 譚小清 學 號 200908002213 院 (系) 計算機與通信工程系 專業、年級 通信工程專業 2009級 指導老師 李文(講師) 2013年 4 月 18 日基于ios影視信息手機客戶端的設計與實現摘 要隨著信息網絡時代的快速發展,手機使用方式的多樣化,智能手機以及移動互聯網應用的普及,不斷地改

2、變著人們的生活方式。一款好的應用軟件成為手機必備,本設計主要基于ios平臺實現了iphone客戶端查看影視訊息的功能,通過此款應用可以查看當前最新影片的簡介、評論、評分等等。本設計采用x-code開發工具,它具有可視化的編程界面、詳細的提示、以及完善的幫助文檔,軟件開發人員使用起來非常方便。本設計首先概要性地介紹了本文使用的關鍵技術、mvc模式等;然后給出模塊端總體分析與設計,包括系統的需求分析、系統設計要求、系統總體功能設計;其次用圖表加文字的方式對設計工作中的重點部分做出了詳細地闡述;最后具體描述了模塊的實現過程,并對關鍵技術的實現,進行了代碼解析。【關鍵詞】影視信息;ios;iphone

3、;josn;服務器 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 peoples way of li

4、fe. 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 tools

5、, 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 system

6、 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 imformatio

7、n;ios;iphone;json;sever目 錄1 緒 論11.1 本課題背景及意義11.2 國內外研究現狀11.3 本課題的研究內容21.4 本章小結32 ios、開發語言、環境以及所用技術介紹32.1 ios簡介32.2開發語言objective-c32.3 開發環境42.4 應用程序框架以及設計模式52.5 第三方類庫72.6 本章小結83 功能模塊設計103.1 需求分析103.2系統模塊設計113.3 登錄模塊和手勢交互模塊流程圖設計113.3.1 用戶登錄模塊設計113.3.2 手勢交互設計123.3.3 多點觸摸交互設計123.4 詳細設計123.4.1 選擇的控件133.4

8、.2 界面的繪制143.4.3 數據輸入與傳遞143.4.4 數據的保存和顯示153.4.5 自動登錄153.5 本章小結164 功能模塊的具體實現174.1 數據請求174.2 網絡判斷174.3 數據的解析184.4 代理的實現194.5 算法描述與實現204.6 本章小結225 數據測試235.1 影視信息列表頁數據測試235.2 具體內容頁數據測試245.3 評論頁及回復頁數據的測試255.4 登錄測試265.5 本章總結276 總結和展望286.1 總結286.2 展望28參考文獻29致 謝301 緒 論隨著信息網絡時代的快速發展,手機使用方式的多樣化,智能手機以及移動互聯網應用的普

9、及,不斷地改變著人們的生活方式。一款好的應用軟件成為手機必備,本設計主要基于ios平臺實現了iphone客戶端查看影視訊息的功能,通過此款應用可以查看當前最新影片的簡介、評論、評分等等。本設計采用x-code開發工具,它具有可視化的編程界面、詳細的提示、以及完善的幫助文檔,軟件開發人員使用起來非常方便。本設計首先概要性地介紹了本文使用的關鍵技術、mvc模式等;然后給出模塊端總體分析與設計,包括系統的需求分析、系統設計要求、系統總體功能設計;其次用圖表加文字的方式對設計工作中的重點部分做出了詳細地闡述;最后具體描述了模塊的實現過程,并對關鍵技術的實現,進行了代碼解析。1.1 課題背景及意義 當今

10、社會,手機已經成為人們生活必不可少的一部分,而隨著科技的進步,手機已經不再僅僅是只是一個簡單的通話工具了,手機日趨于智能化、定制化、網絡化、娛樂多媒體化、安全性。伴隨著3g技術的日益成熟和3g手機的普及,手機網絡化更是成為引人注目的焦點,移動互聯網已經成為未來發展的一個主流趨勢為業界所認可,手機作為人們使用最廣泛的移動信息終端在未來移動互聯網中地位舉足輕重。未來手機將成為最主要的移動互聯網的使用終端,以后在移動互聯網實現的包羅萬象的服務都會以手機為載體。在此基礎上,以手機作為客戶端的網絡應用程序開發,引起越來越多人的關注。iphone手機軟件開發代表了未來開發領域的新方向,隨著iphone應用

11、需求的增加,只要iphone手機軟件開發應用夠創意、夠實用,就能夠獲得豐厚的回報全球越來越多的開發者們投身其中,中國的iphone手機軟件開發者也不甘心置身局外,由此看來iphone軟件業的發展形勢非常樂觀,但是由于語言方面的限制,在中國,iphone的軟件開發工作還處于緩慢上升階段,這意味著市場非常龐大,完全有上升和提高的空間,并且,隨著人們生活節奏的提高,更加注重跟上時代腳步,完全不滿足于現在獲取影訊的方式,這無疑對信息的傳播方式提出了更高的要求。1.2 國內外的研究現狀手機與互聯網的融合形成的移動互聯網業務是與傳統互聯網以及傳統移動通信業務完全不同的新型業務,移動互聯網催生的新型需求日益

12、成為傳統it與通信巨頭的藍海。隨著社會的不斷發展,各種各樣的手機軟件參與了人類的活動和社會活動,因此改善人和人之間的關系,使人對人的交流更為廣泛。還可以促進大腦智力的發展,讓人們的思維更活躍。現今,人類己進入了信息化網絡3g時代,手機的應用范圍越來越廣泛。根據摩根士丹利的一份報告,未來5年移動互聯網的人數將超過傳統互聯網。移動互聯網是一塊巨大的金礦等待開采。iphone是蘋果公司推出的一款手機平臺,其特點是封閉平臺,由蘋果推出統一api,編程語言采用object-c,c語言的編程效率還是相當高。目前蘋果的iphone已經取得很大成功,其推出的軟件商店模式也使得開發者大量參與進來,極大豐富了ip

13、hone的功能,也使開發者有了致富機會,而在中國,移動、電信、聯通紛紛推出自己的應用程序商店,并不只為效仿蘋果app store的商業模式,更多的是看到豐富的應用程序在未來將成為用戶選擇運營商和手機平臺的決定因素;而對于開發者來說,手機軟件商店開發者分成模式將 成為他們的另一個金礦。北京時間2012年3月15日下午消息,蘋果周三發布的文件顯示,app store應用商店每周收到的iphone和ipad應用上架申請超過2.6萬次,全年約為130萬次2。自從2008年上線以來,app store收到的應用申請數量已經大幅增長。蘋果2009年向美國聯邦通訊委員會(fcc)透露,每周收到的申請為850

14、0次,2010年達到1.5萬次,約為現在的一半3。事實上,自誕生以來,蘋果應用商店幾乎是以幾何級的規模增長。蘋果應用商店2008年7月上線,僅用了2個月的時間就突破了1億次下載。去年10月,app store應用商店的下載次數超過180億次。不過光鮮亮麗的數字背后,卻也隱含著高風險、高成本的危機,iphone 最大的問題,這是一個封閉的系統,代碼的不開源,從操作系統到開發語言的獨具一幟,這注定了開發人員不多,相對于其他操作平臺開發人員漸現后勁不足。1.3 本論文的研究內容本文深入分析了課題的背景及意義、iphone應用的現狀和發展趨勢。在前人的研究基礎上對影視信息手機客戶端進行了重構和設計。本

15、軟件在通過對服務器數據的解析,實現了各個對全國影訊的展現,實現對影片簡介、評分、評論等等的查看功能。詳細功能的設計和實現。1.4 本章小結本章中介紹了iphone軟件開發的課題背景及意義,闡明了該應用軟件開發的國內外研究現狀,描述了本論文的研究內容及本論文的結構。2 ios、開發語言、環境以及所用技術介紹2.1 ios簡介ios最初是設計在iphone上的操作系統,蘋果公司于2007年1月9日的macworld大會上公布了這個系統,并命名為iphone os,但隨著此系統在ipod touch、ipad以及apple tv等蘋果產品上的廣泛應用,蘋果公司于2010年6月7日wwdc大會上將其改

16、名為ios。據canalys的數據顯示, 截止到2011年11月,ios占據了全球智能手機系統市場份額的30%,在美國的市場占有率更是達到了43%。隨著andriod開源操作系統的異軍突起以及windows phone的發力,ios市場份額正被一點點的蠶食,但ios設備的利潤率高的驚人,以智能手機為例,iphone的利潤額占到整個智能手機利潤額的80%,受益于此,蘋果的市值也達到了5000億美元。ios操作采用的是多點觸控直接操作,控制方法包括滑動、輕觸屏幕和圖標及按鍵。操作有:滑動、輕按、縮小及放大。此外,ios移動設備中還內置了加速器,使得旋轉ios設備時,界面也可以得到旋轉,這也使得ip

17、hone等便攜設備更便于使用。自3gs開始,iphone裝備有陀螺儀,這使得iphone有了重力感應,游戲效果更加的突出。屏幕的下方是home鍵,點按回到主界面。底部是dock,可安放四個使用者最經常使用的程序的圖標。屏幕最上方是狀態欄,顯示一些有關資訊:如時間、電池電量和訊號強度等。其余的屏幕用于顯示當前的應用程序。啟動程序,只需點按該程序的圖標,點按屏幕下方的home鍵即退出應用程序。在iphone 3.0及后續版本中,及時應用程序退出,當第三方軟件收到了新的訊息時,蘋果公司的服務器將把這些通知推送至iphone或ipod touch上(不管它是否正在運行中)。2.2開發語言objecti

18、ve-cobjective-c, 也通常被寫作objc,是一種擴充c的面向對象編程語言,主要用于mac os x和gnustep這兩個使用openstep標準的系統。objective-c最開始并不支持垃圾回收,因為垃圾回收有漫長的“死亡時間”, 會導致整個系統失去功用。但自xcode4.0開始,支持自動釋放,也就是arc (automatic reference counting)機制,不需要用戶手動去release每一個對象,編譯器會在編譯期間自動幫你添加那些以前你經常寫的nsobject release。objective-c和c+有很多不同之處,objective-c不支持運算符重載,

19、也只允許對象單繼承,但其引入的categories和protocols可以提供很多多重繼承的好處。很多常見的編譯時的性能優化方法都不能應用于obj-c,比如內聯函數。2.3開發環境(1)xcode 工具xcode是apple的開發工具套件,支持項目管理、編輯代碼、構建可執行程序、代碼級調試、代碼的版本管理、性能調優等等。這個套件的核心是xcode應用本身,它提供了基本的源代碼開發環境。開發者可以在xcode中創建新項目,開始新的iphone應用程序。一個項目管理應用程序所有的信息,包含源代碼、編譯設置和把所有文件整合到一起的編譯規則。xcode項目的核心是項目窗口,開發者可以通過該窗口快速訪問

20、應用程序的所有關鍵元素。組和文件列表管理項目文件,包括了源代碼文件和編譯后的目標文件。工具欄提供了常用的工具和命令,詳細資料面板用來設置項目的工作區域,項目窗口的其他部分可以提供更多的項目信息。 項目窗口 組和文件列表 詳細資料面板xcode有一個高級的代碼編輯器,它提供代碼補全、語法高亮、代碼隱藏(臨時隱藏代碼塊),還有錯誤、警告和說明的內置注釋。xcode環境中提供了一些默認的設置和用戶環境設置。并且需要立即幫助文檔,xcode搜索助手提供了上下文文檔,同時開發者可以在幫助文檔窗口中瀏覽和搜索相關信息。(2)simulator模擬器iphone simulator是iphone sdk中頗

21、為有用的一個工具,無需使用實際的iphone/ipod touch就可以測試應用程序。通常不需要直接啟動iphone simulator它在xcode運行(或是調試)應用程序時會自動啟動。xcode會自動將應用程序安裝到iphone simulator上。開發者在xcode創建應用程序,在編譯時需要選擇iphone模擬器還有設備。iphone模擬器提供了一個本地的應用測試環境。在iphone模擬器通過測試后,可以用xcode編譯并運行到與計算機相連接的iphone上。在iphone上的運行提供了最全面的測試環境,xcode可以在設備測試時用內置的調試器跟蹤代碼。(3)interface bui

22、lder在interface builder 中創建的nib文件包含了uikit需要在應用中創建相同對象的所有信息。在運行時加載nib文件,創建它們的運行時版本,設置與interface builder中相同的屬性。它也使用連接信息,建立新建對象和應用程序中其他對象之間的聯系。連接信息提供了代碼與nib文件的對象連接關系,同時也提供了對象與用戶動作之間的聯系。總的來說,在創建應用程序圖形用戶界面時,使用interface builder可以節約大量時間。interface builder擺脫了手工編寫代碼創建、設置和定位界面對象,并且interface builder是一個可視的編輯器,開發者

23、可以清楚地看到在運行時界面效果。(4)instruments為了確保軟件具有最佳的用戶體驗,instruments可以分析iphone應用在模擬器或真實設備上運行時的性能。instruments將用時間軸圖表的形式表現運行應用程序時的各種數據,包括內存消耗、磁盤活動、網絡活動和圖形表現等。時間軸視圖表征了不同類型的應用程序信息,可以收集應用程序的全部行為,而不是某個特定區域的行為。除時間軸視圖外,instruments也提供工具幫助開發者分析運行時應用程序的行為。例如,instruments窗口可以保存多個運行時數據,開發者可以觀察應用程序的行為哪些需要改進或哪些需要重寫,開發者可以保存數據到

24、instruments文檔中,也可以隨時打開這些數據。2.4應用程序框架以及設計模式mvc (模型視圖控制器)是xerox parc在八十年代為編程語言smalltalk80發明的一種軟件設計模式,至今已被廣泛使用5。最近幾年被推薦為sun公司j2ee平臺的設計模式,并且受到越來越多的使用 ios 和 php 的開發者的歡迎。mvc是用于拆分gui應用程序的邏輯方法。mvc是一個設計模式,它強制性的使應用程序的輸入、處理和輸出分開。 mvc 模型將所有功能能劃分為3種,如圖2-1所示。(1)模型模型對象代表特別的知識和專業技能,它們負責保有應用程序的數據和定義操作數據的邏輯。被模型返回的數據是

25、中立的,就是說模型與數據格式無關,這樣一個模型能為多個視圖提供數據由于應用于模型的代碼只需寫一次就可以被多個視圖重用,所以減少了代碼的重復性。(2)視圖視圖對象知道如何顯示應用程序的模型數據,而且可能允許用戶對其進行編輯。視圖是用戶看到并與之交互的界面。如何處理應用程序的界面變得越來越有挑戰性。mvc一個大的好處是它能為你的應用程序處理很多不同的視圖。在視圖中其實沒有真正的處理發生,不管這些數據是聯機存儲的還是一個雇員列表,作為視圖來講,它只是作為一種輸出數據并允許用戶操縱的方式。圖2-1 mvc模式設計(3)控制器控制器對象是應用程序的視圖對象和模型對象之間的協調者。控制器接受用戶的輸入并調

26、用模型和視圖去完成用戶的需求。控制器本身不輸出任何東西和做任何處理。它只是接收請求并決定調用哪個模型構件去處理請求,然后用確定用哪個視圖來顯示模型處理返回的數據。mvc最重要的一點是多個視圖能共享一個模型,正如我所提及的,現在需要用越來越多的方式來訪問你的應用程序。對此,其中一個解決之道是使用mvc,無論你的用戶想要flash界面或是wap界面;用一個模型就能處理它們。由于你已經將數據和業務規則從表示層分開,所以你可以最大化的重用你的代碼了。由于模型返回的數據沒有進行格式化,所以同樣的構件能被不同界面使用。例如,很多數據可能用html來表示,但是它們也有可能要用macromedia flash

27、和wap來表示。模型也有狀態管理和數據持久性處理的功能。因為模型是自包含的,并且與控制器和視圖相分離,所以很容易改變你的應用程序的數據層和業務規則。如果你想把你的數據庫從mysql移植到oracle,或者改變你的基于rdbms數據源到ldap,只需改變你的模型即可。一旦你正確的實現了模型,不管你的數據來自數據庫或是ldap服務器,視圖將會正確的顯示它們。由于運用mvc的應用程序的三個部件是相互對立,改變其中一個不會影響其它兩個,所以依據這種設計思想你能構造良好的松偶合的構件。對我來說,控制器的也提供了一個好處,就是可以使用控制器來聯接不同的模型和視圖去完成用戶的需求,這樣控制器可以為構造應用程

28、序提供強有力的手段。給定一些可重用的模型和視圖,控制器可以根據用戶的需求選擇模型進行處理,然后選擇視圖將處理結果顯示給用戶。設計模式(1)工廠模式類工廠方法的實現是為了向客戶提供方便,它們將分配和初始化合在一個步驟中, 返回被創建的對象,并進行自動釋放處理6。工廠方法可能不僅僅為了方便使用。它們不但可以將分配和初始化合在一起,還可以為初始化過程提供對象的分配信息。(2)單利模式foundation 和 application kit 框架中的一些類只允許創建單件對象,即這些類在當前進程中的唯一實例。舉例來說,nsfilemanager 和nsworkspace 類在使用時都是基于進程進行單件對

29、象的實例化。當向這些類請求實例的時候,它們會向您傳遞單一實例的一個引用,如果該實例還不存在,則首先進行實例的分配 和初始化。 單件對象充當控制中心的角色,負責指引或協調類的各種服務。(3)觀察者模式在ios開發中,通知機制依靠觀察者模式得以實現。通知機制是一個中心對象為所有觀察者提供變更通知,觀察者模式中subject對象,又可稱目標對象,是通知的發布者,又是被觀察者。提供注冊和取消注冊的方法;observer對象,又可稱為觀察者,是通知的訂閱者。observer類中,相識subject,以達到能夠接收通知。2.5 第三方類庫(1)通信協議請求asihttprequest使用ios sdk中的

30、http網絡請求api,相當的復雜,調用很繁瑣,asihttprequest就是一個對cfnetwork api進行了封裝,并且使用起來非常簡單的一套api,用objective-c編寫,可以很好的應用在mac os x系統和ios平臺的應用程序中。asihttprequest適用于基本的http請求,和基于rest的服務之間的交互。(2)touchjson解析 cocos2d for iphone是開源2d引擎中特性最完備的一個。 touchjson的使用屬于不想在一個比較完全的objective c環境中添加c+代碼,所以不使用jsoncpp來配合cocos2d,何況cocos2d的模板工

31、程中本來就帶有touchjson了。另外,因為touchjson用objective c完成,解析后也是個nsdictionary的對象所以與objecitve c的對象組合使用會更加自然一些。 (3)sdwebimage圖片庫是一個支持網絡圖像遠程異步下載的uiimageview的類別。具有緩存管理、異步下載、同一個url下載次數控制和優化等特征。2.6 本章小結本章主要是深入研究了本系統的開發工具xcode,介紹了一些編輯器模擬器的使用方法和技巧。然后介紹系統mvc框架,指出框架在項目中的應用,接著分別介紹了本系統用到的設計模式和第三方庫。3 功能模塊設計3.1 需求分析(1)首頁:頁面主

32、體內容構成:大頭圖、圖文列表。而在大頭圖中由圖片+影評標題構成。圖文列表中,單條影評的展示方式:頭像+用戶名+評分影片+評分分值+標題+摘要+影片海報。圖文列表排序規則:同web端。先首頁影評,再新片熱評列表。圖文列表處:用戶初次進入,默認顯示20條,在頂部的時候向下拖動,刷新當前頁面,在頁面底部向上拖動展開顯示更多20條。 手指在屏幕上下滑動,可以查看影視頻道的所有內容。點擊頭圖,進入頭圖內容頁。頁面自右向左顯示。點擊單條圖文列表影評,該條處于選中的狀態,進入影評內容頁。頁面自右向左顯示。頂部導航處:中間顯示頻道名稱:時光網影評。底部導航處:依次顯示:首頁、新聞、影評、電影院、更多。選中效果

33、在“影評”。(2)具體內容頁頁面主體內容構成:頭像、標題、用戶名、評分電影、評分分值、發表時間、海報、正文。頂部導航處:中間顯示頻道名稱:時光網影評。左側顯示返回按鈕。底部操作區處:依次顯示:評論icon(有評論的icon右下角顯示評論數量)、收藏、分享。其中,收藏和分享,未登錄用戶點擊進入登錄頁。頁面自下向上移入。點擊縮略圖,浮層顯示大圖。頁面可隨手指上下滑動。手指點擊屏幕的非縮略圖區域,全屏顯示頁面主體內容,再點擊,回到正常顯示。支持多點觸摸,字體變大變小,縮略圖大小不變。用戶左右滑動可切換上一篇/下一篇電影,點擊評論icon進入查看評論頁,頁面自右向左顯示。(3)查看評論頁頁面主體內容構

34、成:圖文列表。圖文列表中,單條影評的展示方式:頭像+用戶名+微影評。圖文列表處:用戶初次進入,默認顯示20條,在頂部的時候向下拖動,刷新當前頁面,在頁面底部向上拖動展開顯示更多20條。 手指在屏幕上下滑動,可以查看影評頻道的所有內容。點擊表格,彈出回復按鈕、進入發表評論頁面,頁面自右向左顯示。完成時將以另外一種形式顯示于回復當前人表格下,頁面自右向左顯示。頂部導航處:中間顯示頻道名稱:查看評論。左邊顯示返回按鈕,點擊返回按鈕返回評論頁內容,頁面自右向左顯示。底部導航處:顯示寫評論導航條編輯區,點擊編輯區同樣進入發表評論頁面,頁面自右向左顯示完成時將以同種形式顯示于表格最下方,頁面自右向左顯示。

35、(4)發表評論頁頁面主體內容構成:編輯區。圖文列表處:用戶初次進入,編輯區顯示默認文字,且關聯鍵盤顯示。點擊編輯區,默認文字消失,進入編輯狀態。頂部導航處:中間顯示頻道名稱:發表評論。左邊顯示取消按鈕,點擊取消按鈕不保存評論內容回查看評論頁,頁面自右向左顯示。左邊顯示提交按鈕,點擊提交按鈕保存評論內容回查看評論頁,頁面自右向左顯示。3.2系統模塊設計首頁具體內容頁轉發評論收藏全屏 分享寫評論回復程序的整體功能模塊,里面包含數據判斷、功能選擇、輸出模塊等。數據判斷是從cookie中取值。具體的模塊設計如圖3-1所示。圖 3-1 設計結構圖3.3 登錄模塊和手勢交互模塊流程圖設計3.3.1 用戶登

36、錄模塊設計具體內容頁中,需要判斷是否用戶已經登錄,如果登錄則可以則從cookie中取得用戶信息,將評論內容直接以用戶名發送出去,而未登錄時只能匿名發表,而回復別人的評論則必須登錄,流程圖如圖3-2所示。用戶登錄cookie中是否有值登錄成功進行用戶評論和回復ny圖3-2 登錄判斷流程圖3.3.2 手勢交互設計手勢9(gesture)是指從用一個或多個手指接觸屏幕開始,直到手指離開屏幕為止所發生的所有事件。由于手勢是在事件之內傳遞到系統的,然后事件會傳遞到響應者鏈(responder chain)。如果第一個響應者不處理某個特殊事件(如某個手勢),則它會將該事件傳遞到響應者鏈的下一級。如果該鏈中

37、的下一個對象響應此特殊事件,則它通常會處理該事件,這將停止該事件沿著響應者鏈向前傳遞。如圖3-3所示。3.3.3 多點觸摸交互設計很明顯,觸摸(touch)是指手指放到iphone屏幕上,手勢中涉及的觸摸數量等于同時位于屏幕上的手指數量,當觸目數量為1在進行移動時,或觸目數量大于1時形成多點觸目,如圖3-4所示。3.4 詳細設計詳細設計是對整個程序的整體設計,它包含界面的設計、數據結構的設計、功能過程的顯示等。開始第一響應者是否響應第n響應者是結束 否是 否是否響應 否圖3-3 手勢響應鏈流程圖觸摸開始單 擊移 動捏合或移動形成多點觸摸單指多指 圖3-4 多點觸摸結構圖3.4.1 選擇的控件l

38、 uilabel顯示文字的控件,它能設置要顯示的文字的顏色,大小,格式等相關屬性。l uiimageview顯示圖片的控件,根據回來的圖片地址,能從緩沖里或者沙盒中選取要顯示的圖片,它能設置要顯示的圖片的顏色,大小,格式等相關屬性。l uitextview主要用來對文字的輸入,當響應它時自動彈出鍵盤,一行輸入滿時可以自動換行。l uibutton在iphone上主要是一個按鈕,該按鈕能響應用戶一切對其操作的單擊、雙擊、長按事件,可以對其設置響應函數。l uitableview在iphone上一個表格視圖是一維的,自頂向下的條目清單,可選的分為多個區域,區域實際上把清單變為二維數據結構,每個區域

39、有可變數目的條目,因此表格里某個指定的條目由它所在區域和所在區域的行(row)來決定。l uiwebview在iphone上用來顯示網站要顯示的信息,開發者可以重寫網頁數據的格式,也可以用js返回所要用到的數據。3.4.2 界面的繪制界面區域的視圖繪制較為簡單。只需要根據當前需求分析,來對每一個也頁面進行繪制。先生成一個控制器(uiviewcontroller),同時可以生成一個viewcontroller.xib然后將要用到的控件拖入相應的位置,形成插座控件,待請求完成時加載數據。如果沒有生成nib文件,則在viewcontroller.m中用代碼實現控件的生成,再從源視圖像位圖中選擇適當的

40、區域將其添加到內存位圖中,當所有這些圖像方塊都繪制到內存位圖后,再一次性地將整體圖像從內存位圖拷貝到屏幕去。繪制流程如圖3-5所示。3.4.3 數據輸入與傳遞該軟件通過用戶對界面的操作,實現數據的傳遞,而在此項目中當點擊影評頁首頁頭圖和列表時,保存一個當前點擊影評的id將及傳至影評詳情頁。而詳情頁則根據此id進行數據請求,將解析后的數據顯示到當前頁面,而在詳情頁中,點擊圖片用js導出圖片鏈接,將此鏈接對應的圖片從緩存中取出,對其進行操作,而點擊詳情頁下部導航條時則從cookie中取取用戶數據,看是否登錄,然后根據登錄狀態,進行邏輯分析和判斷。是否生成nib文件將控件加入xib中完 成yn在控制

41、器中加入控件開始生成控制器圖3-5 界面繪制流程圖3.4.4 數據的保存和顯示前面實現的眾多功能都是圍繞著位置這一關鍵來運作的,數據的保存分為兩種,一種是臨時緩存,臨時緩存很簡單,sdk封裝好的模塊我們可以直接拿來用,在數據請求完成時可以直接保存到緩存區。另一種則是保存到沙盒路徑既永久保存,此時根據用戶名在沙盒中創建一個文件,用單利模式創建一個用戶數據模型,每次要用時從數據模型中讀取數據,當修改用戶信息時則對其進行保存。而數據的顯示我們只需將從文件中讀到的數據,或者是從緩存中取到的數據加到相應的控件數據上,控件將顯示出我們所設計的效果。3.4.5 自動登錄自動登錄是由軟件自動完成的。用戶在上次

42、登錄程序中登錄了賬戶而沒有對其進行注銷而直接退出程序,這時程序會自動將未退出的賬號記錄下來保存在本地,而當下次啟動此應用時,先從文件中去讀數據,看上次用戶退出時是否處在登錄狀態,若是將用戶名和密碼取出,自動請求登錄接口,完成自動登錄。3.5 本章小結本章主要是對各功能模塊的需求做了詳細的分析。接著劃分系統的模塊,對用戶登錄做了詳細的分析,設計智能手機的多點觸摸,對系統的各個功能頁面進行詳細構造,完成ui圖的繪制及數據的顯示及保存設置,完成自動登錄的邏輯設計。4 功能模塊的具體實現4.1 數據請求 asihttpreques是一款極其強勁的http訪問開源項目。而數據的請求可以分為同步和異步請求

43、,同步意為著線程阻塞,在主線程中使用此方法會使應用停住而不響應任何用戶事件10。所以,在應用程序設計時,大多被用在專門的子線程增加用戶體驗,或用異步請求代替。異步請求更加精準豐富的控制。異步請求的好處是不阻塞當前線程,但相對于同步請求略為復雜,至少要添加兩個回調方法來獲取異步事件不過可以設置在隊列中,同步請求的連接數。往隊列里添加的請求實例數大于maxconcurrentoperationcount時,請求實例將被置為等待,直到前面至少有一個請求完成并出列才被放到隊列里執行。 - (ibaction)graburlinthebackground:(id)sender if(!selfqueue

44、)selfsetqueue:nsoperationqueueallocinitautorelease;nsurl*url=nsurlurlwithstring:http:/allseeing-;asihttprequest*request=asihttprequestrequestwithurl:url;requestsetdelegate:self;request setdidfinishselector:selector(requestdone:);requestsetdidfailselector:selector(requestwentwrong:);selfqueueaddopera

45、tion:request;4.2 網絡判斷網絡判斷是指用戶能否連接到網絡進行請求數據,為了保證數據的可靠性,需要對用戶進行網絡連接失敗和超時進行判斷,當進行數據請求時,如果請求失敗,服務器會返回一個錯誤信息error,而ios-sdk對請求這一塊進行了很好的封裝,返回一個結構體,而其中的1則代表網絡連接失敗,2則是連接30秒超時,代碼如下:#define net_error_connet_failure 網絡連接失敗,請檢查網絡#define net_error_time_out 網絡連接超時- (void)reque requestwentwrong:(asihttprequest *)re

46、questnserror* error = _httprequest.error;self notifydelegatewith: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

47、_time_out;break;default: break;4.3 數據的解析用戶請求回來的數據都是json字符串,json可以表示數組和復雜的對象,而不僅僅是鍵和值的簡單列表。json 可以將 javascript 對象中表示的一組數據轉換為字符串,然后就可以在函數之間輕松地傳遞這個字符串,或者在異步應用程序中將字符串從 web 客戶機傳遞給服務器端程序,用戶只有經過解析后才能使用,關鍵代碼如下:#define release_safely(_pointer)if(_pointer)_pointer release;_pointer = nil; /安全釋放數據模型解析;- (void)

48、requestdone :(asihttprequest *)requestnserror* error = nil;nsdata* data = _httprequest.responsedata; /請求回來數據cjsondeserializer* jsonparser = cjsondeserializer deserializer; nsarray* reviewjsonarray = jsonparser deserializeasarray:data error:&error;if (error)return;nsmutablearray* resp = nsmutablearra

49、y alloc init;for(nsdictionary* reviewdict in reviewjsonarray)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 obje

50、ctforkey:kjson_nickname;review.userimage = 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 代理的實現 由于uiwebview繼承

51、uiscrollview,而uiscrollview無法捕獲uitouch事件,故當觸摸uiwebview時,系統將沒有任何反應,無法實現全屏,用代理注冊手勢,用來捕獲事件。uigesturerecognizerdelegate/注冊手勢/將手勢加入要操作的控件uitapgesturerecognizer*singletap=uitapgesturerecognizerallocinitwithtarget:selfaction:selector(display);_contentwebaddgesturerecognizer:singletap; /這個可以加到任何控件上singletap.

52、delegate=self;singletap.cancelstouchesinview=no;singletaprelease;- (bool)gesturerecognizer:(uigesturerecognizer*)gesturerecognizershouldrecognizesimultaneouslywithgesturerecognizer:(uigesturerecognizer*)othergesturerecognizerreturnyes4.5 算法描述與實現quartz 是 cocoa 全部圖表算法11的核心。它是圖表算法數據結構和畫圖的基礎,也是 mac os x

53、 的窗口服務器。cocoa 圖表算法的基本概念,包括:矩形,點,顏色和系統坐標。(1)矩形和點在quartz 的所有繪圖包括矩形。在 cocoa,你可以用 nsrect 結構去描述一個矩形的位置和尺寸:typedef struct nspoint origin; /起點nssize size; /長寬 nsrect;原點是畫矩形開始的地方。點由 nspoint 來描述,有坐標 x 和 y:typedef struct float x; /橫坐標float y; /縱坐標 nspoint;矩形的大小區域是一個nssize,包含了長和寬。沒有辦法去描述一個 nssize 實例,它必須作為矩形的一部

54、分來使用。typedef struct float width; /寬度float height; /高度 nssize;cocoa 里畫圖的區域被作為一個矩形。quartz 調用這個畫圖區“bounds”。一個 nspoint 點就能描繪 bounds 視圖的任何位置。標準的 quartz 系統坐標是基于 pdf 模式,也就是說畫圖要從左下角開始,如圖4-1所示。圖 4-1 坐標系的描述圖矩形和點比較的一些函數nsequalrects /矩形是否相同nsequalpoints /原點是否相同nsequalsizes /大小是否相同nscontainsrect /是否包含另一個矩形nsintersectsrect /兩矩形重疊的部

溫馨提示

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

評論

0/150

提交評論