基于iOS系統(tǒng)的好生活手機(jī)APP設(shè)計(jì)_第1頁
基于iOS系統(tǒng)的好生活手機(jī)APP設(shè)計(jì)_第2頁
基于iOS系統(tǒng)的好生活手機(jī)APP設(shè)計(jì)_第3頁
基于iOS系統(tǒng)的好生活手機(jī)APP設(shè)計(jì)_第4頁
基于iOS系統(tǒng)的好生活手機(jī)APP設(shè)計(jì)_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 畢 業(yè) 論 文(設(shè)計(jì))課 題 基于IOS平臺(tái)好生活A(yù)PP的設(shè)計(jì)與開發(fā) 學(xué)生姓名 院 部 電氣工程學(xué)院 專業(yè)班級(jí) 指導(dǎo)教師 二 一 六年 六 月目 錄摘 要IAbstractII第1章 緒論- 1 -1.1選題背景- 1 -1.2研究的意義- 1 -第2章 總體開發(fā)環(huán)境- 2 -2.1 開發(fā)環(huán)境與開發(fā)工具- 2 -2.1.2 Xcode開發(fā)工具- 2 -2.2內(nèi)存管理- 3 -第3章 IOS技術(shù)與app功能框架- 4 -3.1不同版本iphone適配分析- 4 -3.2 MVC設(shè)計(jì)模式- 5 -3.3 好生活的功能框架- 6 -3.3.1 引導(dǎo)頁- 6 -3.3.2 登陸界面- 6 -3.3.

2、3 首頁- 7 -3.3.4 個(gè)人界面- 7 -3.3.5 設(shè)置界面- 7 -第4章 好生活客戶端設(shè)計(jì)與實(shí)現(xiàn)- 8 -4.1 項(xiàng)目概述- 8 -4.2 好生活詳細(xì)設(shè)計(jì)- 8 -4.2.1 引導(dǎo)頁界面- 8 -4.2.2 登陸頁面- 9 -4.2.3 首頁- 11 -4.2.4 福利頁面- 13 -4.2.5 個(gè)人和設(shè)置- 14 -第5章 測(cè)試- 15 -5.1 真機(jī)調(diào)試的前提- 15 -5.2 調(diào)試過程- 15 -第6章 結(jié)論- 17 -參考文獻(xiàn)- 18 -致謝信- 19 -基于iOS系統(tǒng)的好生活手機(jī)APP設(shè)計(jì)摘 要隨著智能手機(jī)的不斷更新和發(fā)展,逐漸替代了傳統(tǒng)的手機(jī),而人們對(duì)智能手機(jī)的應(yīng)用的需

3、求也越來越廣泛,已經(jīng)不在是以前打電話、發(fā)短信的簡(jiǎn)單要求,手機(jī)游戲、手機(jī)導(dǎo)航、手機(jī)購物等應(yīng)用已經(jīng)非常流行了。同時(shí),伴隨著iPhone進(jìn)入中國市場(chǎng),Objective-C和Swift逐漸成為開發(fā)者最常用的語言,本設(shè)計(jì)利用蘋果提供的語言進(jìn)行蘋果手機(jī)Application的開發(fā),該軟件是公司向員工發(fā)放福利,利用福利點(diǎn)數(shù)進(jìn)行購物的一款app,它具有界面美觀,操作簡(jiǎn)單,實(shí)用性廣的優(yōu)點(diǎn)。本論文設(shè)計(jì)的實(shí)現(xiàn),關(guān)鍵的開發(fā)程序是用MVC設(shè)計(jì)模式、代理模式以及單利模式的設(shè)計(jì)。對(duì)于此設(shè)計(jì)中各個(gè)界面的設(shè)計(jì)和布局,是解析相應(yīng)的網(wǎng)絡(luò)請(qǐng)求數(shù)據(jù)并用不同的控件展示的,而面對(duì)不同版本的iPhone,可以利用代碼或者官方提供的Auto

4、layout設(shè)置約束和Sizeclass設(shè)置屏幕尺寸等對(duì)其進(jìn)行適配。本設(shè)計(jì)利用自定義可以左右滑動(dòng)的tabbar,將不同頁面放置到tabbar上面,實(shí)現(xiàn)系統(tǒng)不能左右滑動(dòng)的效果,不同頁面的展示通過自定義的單元格顯示在UITableView上。本設(shè)計(jì)中的網(wǎng)絡(luò)請(qǐng)求都遵循Http協(xié)議,網(wǎng)絡(luò)請(qǐng)求的實(shí)現(xiàn)是利用第三方的類庫AFNetworking,通過創(chuàng)建AFNetworking中類的對(duì)象,向服務(wù)器發(fā)送異步請(qǐng)求,請(qǐng)求解析得到的數(shù)據(jù),將數(shù)據(jù)展示在頁面上。本文設(shè)計(jì)的app應(yīng)用非常廣泛,給人們的日常生活帶來了便利,通過對(duì)本設(shè)計(jì)的開發(fā),實(shí)現(xiàn)了許多app共有的功能,加深對(duì)項(xiàng)目開發(fā)的理解和認(rèn)識(shí)。關(guān)鍵字:iOS ;Obje

5、ctive-C ;好生活A(yù)pp;iphoneI 基于iOS系統(tǒng)的好生活手機(jī)APP設(shè)計(jì)Good life based on iOS mobile APP designAbstract along with the continuous renewal of smart phones and the development, gradually replaced the old mobile phone, and people's demand for the application of smart phones is becoming more and more widely, is

6、no longer simple requirements before making phone calls, text messaging, mobile games, mobile phones navigation, shopping and so on applications has been very popular. At the same time, along with the iPhone to enter the Chinese market, Objective - C and Swift gradually become one of the most common

7、 language of developers, this design language from apple for the apple mobile phone Application development, the software is to give benefits to employees, the company the use of welfare points for shopping app, it has beautiful interface, easy operation, the advantages of wide practicability. This

8、paper design the implementation of the key development program is to use the MVC design pattern, the pattern design of the proxy pattern and simple interest. For the design of the interface design and layout, to parse the corresponding network request data using different controls display, with a di

9、fferent version of the iPhone, can use the code or official Autolayout set constraints and Sizeclass Settings screen size to fit. This design USES the custom can slide around tabbar, place different pages to tabbar, implement system cannot control the effect of the sliding, different pages shows thr

10、ough custom cell display on the UITableView. Network requests are followed in the design of the Http protocol, the realization of the network request is to use third-party libraries AFNetworking, by creating a class of object in AFNetworking, send an asynchronous request to the server, the request p

11、arse the data, the data display on the page. This paper designed an app is very broad, brings convenience to People's Daily life, through the development of this design, to realize the function, common to most app to deepen the understanding of project development and know.keyword:iOS ;Objective

12、-C;GoodLife App;iphone- 1 -銅陵學(xué)院畢業(yè)論文(設(shè)計(jì))第1章 緒論1.1選題背景隨著社會(huì)的發(fā)展,時(shí)代的進(jìn)步,智能手機(jī)為人們的生活帶來了許多的便利之處,而傳統(tǒng)的鍵盤式手機(jī)逐漸被智能手機(jī)所取代,智能手機(jī)像個(gè)人電腦一樣,它擁有的操作系統(tǒng)是單獨(dú)的,擁有的運(yùn)行空間同樣是單獨(dú)的,因?yàn)樗梢宰远x的安裝第三方軟件,所以智能手機(jī)相對(duì)與老式手機(jī)來說有著強(qiáng)大的擴(kuò)展功能,用戶可以自行的安裝或卸載其需要的app。隨著智能手機(jī)越來越廣泛的使用,用戶越發(fā)依賴手機(jī)軟件,而網(wǎng)絡(luò)購物也越來越流行,因此像購物類的這種app 的市場(chǎng)需求和發(fā)展前景也越來越煥發(fā)。好生活app充分利用市場(chǎng)的需求,將手機(jī)app和網(wǎng)

13、絡(luò)購物合為一體,讓人們更加方便的利用手機(jī)進(jìn)行購物,手機(jī)購物也成為了人們主要購買商品的途徑之一,有了好生活這款app就不需要去實(shí)體店鋪,也不用坐在電腦前,一部手機(jī)就能完成在電腦上想要完成的操作,中國的未來的手機(jī)購物將有一個(gè)快速的發(fā)展期,用戶可以通過手機(jī)查詢商品信息并在線支付購買商品。相關(guān)的數(shù)據(jù)調(diào)查說明了,大約46.00%的手機(jī)玩家以前有過用手機(jī)進(jìn)行購物,21.50%的手機(jī)玩家聲明想要嘗試在手機(jī)上進(jìn)行購買商品,此調(diào)查顯示手機(jī)購物在我國擁有十分廣闊的前景。隨著蘋果手機(jī)在中國的日益發(fā)展,iOS一系列的技術(shù)也越來越被開發(fā)者應(yīng)用,所以編寫iOS操作系統(tǒng)應(yīng)用程序和Mac OS X操作系統(tǒng)應(yīng)用程序的Objec

14、tive-C語言也被開發(fā)者熟知及應(yīng)用。OC語言是C語言的一個(gè)超集,在C語言的基礎(chǔ)上加了面向?qū)ο蟮奶匦?,OC與Java語言相同,都是單繼承,這一點(diǎn)與C+語言不同,OC不支持命名空間機(jī)制,取而代之的是在類名之前添加前綴,以此來區(qū)分,Objective-C是動(dòng)態(tài)定型,所以它的類庫比C+要容易操作,OC語言在運(yùn)行的時(shí)侯能夠允許通過字符串名字來對(duì)方法和類進(jìn)行交互,并且能夠動(dòng)態(tài)連接和添加類,這就是OC 語言的多態(tài)特性。綜上所述,Objective-C有著非常巨大的空間進(jìn)行發(fā)展。iOS里面只支持MAC和ARC的開發(fā),ARC是Automatic Reference Counting的簡(jiǎn)稱,我們也可叫它自動(dòng)引用

15、計(jì)數(shù),是在iOS5.0之后推出的內(nèi)存管理的新特性。本質(zhì)上還是使用引用計(jì)數(shù)來管理對(duì)象,只是程序在編譯時(shí),會(huì)在合適的地方添加release或者autorelease,不需要手動(dòng)向?qū)ο蟀l(fā)送release或者autorelease方法,ARC比GC性能好。1.2研究的意義手機(jī)購物在當(dāng)今社會(huì)已是非常普遍了,大多數(shù)人都已了解并熟練的利用手機(jī)在網(wǎng)上進(jìn)行購物了,此款app是利用公司給員工發(fā)放的點(diǎn)數(shù)進(jìn)行購買商品的,和Q幣的功能類似,用戶可以利用點(diǎn)數(shù)換取其想要獲得的商品或其他種類的消費(fèi)。本人從去年開始接觸OC語言,在經(jīng)過一段時(shí)間的學(xué)習(xí)后,對(duì)iOS的開發(fā)有一定的了解和認(rèn)識(shí),此項(xiàng)目便是在公司實(shí)習(xí)期間所接觸到的,項(xiàng)目具

16、有一定的復(fù)雜性,用到了不同的設(shè)計(jì)模式和第三方的類庫,通過對(duì)項(xiàng)目的開發(fā),鞏固了自己iOS水平和獨(dú)立解決問題的能力。第2章 總體開發(fā)環(huán)境2.1 開發(fā)環(huán)境與開發(fā)工具2.1.1 Objective-C 語言概述Objective-C是對(duì)C語言的擴(kuò)充,而且在此基礎(chǔ)上增加了面向?qū)ο螅怯葿rad Cox在1980年代初發(fā)明的,大部分是用在與Mac OS X和GNUstep這兩個(gè)使用OpenStep標(biāo)準(zhǔn)的系統(tǒng),不過在NeXTSTEP和OpenStep中它是更基本的語言,Objective-C不僅可以在上述的系統(tǒng)中使用,而且能夠在其它的系統(tǒng)上進(jìn)行編寫和編譯,例如:GCC、Clang等。目前,Objectiv

17、e-C的主要用途則是編寫iOS操作系統(tǒng)應(yīng)用程序和Mac OS X操作系統(tǒng)應(yīng)用程序,所以說它是一種實(shí)用的開發(fā)語言。Objective-C具有單繼承的語言特點(diǎn),不能進(jìn)行多重繼承,cocoa中NSObject是所有類的父類,多重繼承雖然不能在此實(shí)現(xiàn),不過可以用protocl委托代理來進(jìn)行實(shí)現(xiàn),面向?qū)ο笳Z言大部分都是單繼承的,如java等。OC語言在C的基礎(chǔ)之上多了其自己的特性,即封裝、多態(tài)、繼承,OC語言不支持命名空間機(jī)制,不過它要在類名之前添加上前綴,來區(qū)分不同的類之間的不同,不支持運(yùn)算符重載,而它支持C語言、OC與C+可以混編。和其他的所有面向?qū)ο笳Z言類似,Objective-C也是用類來封裝數(shù)

18、據(jù),對(duì)數(shù)據(jù)進(jìn)行一系列的操作,對(duì)象就是類的實(shí)例化,它包含了類聲明的實(shí)例變量將自己的內(nèi)存地址復(fù)制,以及類成員的指針,NSObject是頂級(jí)父類,即所有的類都是NSObject的字類。 OC中的類可以聲明兩種類型的方法,即加號(hào)方法(類方法)和減號(hào)方法(實(shí)例方法),加號(hào)方法是由類進(jìn)行調(diào)用的,而減號(hào)方法不同,必須創(chuàng)建類的對(duì)象,由對(duì)象調(diào)用減號(hào)方法,這兩種類型的方法都可攜帶參數(shù)和返回值,方法的聲明格式是:或(返回值類型)方法名:(參數(shù)類型)參數(shù)名。如果方法中無參數(shù),可以省略方法名后的冒號(hào)。2.1.2 Xcode開發(fā)工具Xcode是一款用來編程的軟件,是由蘋果公司獨(dú)立開發(fā)的,它向開發(fā)人員提供了需要開發(fā)所涉及的

19、環(huán)境,它提供了項(xiàng)目管理、代碼編輯、編譯可執(zhí)行文件、源代碼調(diào)試、代碼庫管理和性能優(yōu)化等的工具,Xcode不是唯一使用的開發(fā)工具,目前開發(fā)所用到的是Xcode6.3版本。首先要關(guān)注的是Xcode應(yīng)用程序,它提供了開發(fā)iPhone應(yīng)用項(xiàng)目的全部代碼的建立和使用、編譯代碼為可執(zhí)行文件、運(yùn)行調(diào)試OC或者swift代碼,還包括在iPhone模擬器上運(yùn)行或者是直接在設(shè)備上運(yùn)行等。開發(fā)者可以在Xcode中創(chuàng)建新項(xiàng)目,開始新的iPhone應(yīng)用程序。一個(gè)項(xiàng)目控制著應(yīng)用程序全部的信息,包含源代碼、編譯設(shè)置和把所有文件整合到一起的編譯規(guī)則。Xcode項(xiàng)目的中心思想就是是項(xiàng)目的各個(gè)不同的窗口,開發(fā)者可以通過該窗口迅速的

20、找到應(yīng)用程序的全部有用的元素。組和文件列表管理項(xiàng)目文件,包含了源代碼文件和編譯結(jié)束的目標(biāo)文件。工具欄提供了常用的工具和命令,詳細(xì)資料面板用來設(shè)置項(xiàng)目的工作區(qū)域,項(xiàng)目窗口的其他部分可以提供更多的項(xiàng)目信息。Xcode中有一些常用快捷鍵,方便開發(fā)者對(duì)程序進(jìn)行操作,如commandr:程序運(yùn)行 commandb:程序編譯 commandc:復(fù)制commandv:粘貼 command方向鍵:光標(biāo)快速移動(dòng) commandshiftk:清理等。 2.1.3 開發(fā)環(huán)境(1)開發(fā)環(huán)境Mac OS X Version 10.9.2(2)運(yùn)行環(huán)境iPhone模擬器或者真機(jī)調(diào)試2.2內(nèi)存管理 從iOS5.0之后,蘋果

21、官方推出了ARC技術(shù),即是內(nèi)存管理的新特性,ARC是Automatic Reference Counting的簡(jiǎn)稱,自動(dòng)引用計(jì)數(shù),在此之前,蘋果一直用的是MRC管理內(nèi)存,即手動(dòng)管理引用計(jì)數(shù),遵循“誰創(chuàng)建,誰釋放,誰引用,誰管理”的規(guī)則,當(dāng)創(chuàng)建對(duì)象時(shí),我們會(huì)調(diào)用alloc或new方法,或者向?qū)ο蟀l(fā)送copy,retian消息時(shí),會(huì)使對(duì)象的引用計(jì)數(shù)加一,我們就有義務(wù)向它發(fā)送release或者autorelease消息,使其引用計(jì)數(shù)減一,當(dāng)對(duì)象的引用計(jì)數(shù)為零時(shí),系統(tǒng)就會(huì)自動(dòng)釋放該對(duì)象。 ARC則不需要我們手動(dòng)的向?qū)ο蟀l(fā)送release或者autorelease消息,它是編譯時(shí)特性,即程序在編譯的時(shí)候

22、會(huì)在合適的地方為我們自動(dòng)添加release或者autorelease,本質(zhì)上還是用引用計(jì)數(shù)來管理內(nèi)存,ARC使代碼簡(jiǎn)潔,防止內(nèi)存泄漏,提高零效率。第3章 IOS技術(shù)與app功能框架3.1不同版本iphone適配分析在實(shí)際開發(fā)的過程中,首先遇到的問題就是屏幕適配,可以說做好屏幕適配是開發(fā)的基礎(chǔ),提到適配,第一要了解的就是不同版本iphone的屏幕大小,如圖3-1所示:圖3-1 不同版本iphone的分辨率我們根據(jù)屏幕的不同及分辨率的不同對(duì)iphone進(jìn)行適配。蘋果官方非常重視適配問題,適配是開發(fā)程序的基本條件,官方推薦采用autolayout添加約束和sizeclass調(diào)節(jié)屏幕尺寸對(duì)屏幕進(jìn)行適配

23、,即是拋棄以前的用坐標(biāo)寫死視圖的位置和大小,只是對(duì)控件間的相對(duì)距離進(jìn)行約束,讓控件自動(dòng)適配屏幕。下面用一個(gè)簡(jiǎn)單易懂的例子來說明autolayout的部分使用技巧和方法,等寬子視圖的布局,所謂等寬子視圖,說的簡(jiǎn)單了也就是對(duì)一個(gè)有多個(gè)子視圖的父視圖來說,不管父視圖的寬度是如何的變化,所有子視圖的寬度都是相等的,如圖3-2所示:圖3-2適配效果圖分析一下這種情況的視圖約束的規(guī)則,4個(gè)不同顏色的子視圖具有相同的寬度,子視圖之間的距離固定為10,最左邊和最右邊距屏幕邊緣的距離為10,子視圖的高度隨著屏幕的比例進(jìn)行變大或變小,接下來就是將圖中的約束全部實(shí)現(xiàn),其中最關(guān)鍵的約束是等寬約束,子試圖之間的固定距離

24、的約束。對(duì)于所有的約束條件如圖3-3所示;圖3-3autolaryout約束條件在實(shí)際的開發(fā)過程中,會(huì)遇到各種各樣的屏幕適配,這就需要我們對(duì)aotolayout非常了解,對(duì)約束條件非常清晰,autolayout的出現(xiàn)讓蘋果適配問題變得簡(jiǎn)單,不在需要純代碼適配,給發(fā)開者節(jié)省了時(shí)間,增加了效率,從圖中可以看出各個(gè)約束的效果和不同。3.2 MVC設(shè)計(jì)模式MVC是一種架構(gòu)設(shè)計(jì),M表示數(shù)據(jù)模型(model),V表示視圖(view),C表示控制器(controller)。數(shù)據(jù)模型:負(fù)責(zé)存儲(chǔ)、定義、操作數(shù)據(jù),例如,模型對(duì)象可能是表示展示視圖中的一條數(shù)據(jù),用戶在視圖層中所進(jìn)行的創(chuàng)建或者修改數(shù)據(jù)的操作,通過控制

25、器對(duì)象傳達(dá)出去。模型對(duì)象在改變的時(shí)侯,就會(huì)通知試圖控制器的對(duì)象,控制器對(duì)象發(fā)送相應(yīng)的消息來更新我們需要改變的試圖對(duì)象。視圖是用來展示數(shù)據(jù)給用戶,和用戶進(jìn)行操作交互,視圖通過顯示的形式,把信息轉(zhuǎn)達(dá)給用戶。不同視圖顯示著不同的內(nèi)容,表達(dá)了模型的數(shù)據(jù)變化和狀態(tài)變化的消息。每個(gè)視圖對(duì)象都會(huì)有一個(gè)更新的作用,它可被變化-傳播機(jī)制所激活。當(dāng)讓試圖對(duì)象更新時(shí),視圖獲取到模型帶來的數(shù)據(jù)值,并用這些數(shù)據(jù)來更新顯示出來??刂破魇荕與V的協(xié)調(diào)者,控制器獲取數(shù)據(jù),將數(shù)據(jù)交給視圖去展示。MVC的優(yōu)點(diǎn)表現(xiàn)在以下幾個(gè)方面:(1) 能夠?qū)⒁粋€(gè)模型在運(yùn)行時(shí)一起創(chuàng)建和利用許多個(gè)不同的視圖。變化-傳播機(jī)制能夠保證一切有關(guān)的視圖很迅

26、速的得到模型數(shù)據(jù)變化,然后將全部關(guān)聯(lián)的視圖和控制器之間行為和數(shù)據(jù)同步。(2) 視圖與控制器的可接插性,可以變換視圖和控制器不同的對(duì)象,而且可以根據(jù)不同的要求多態(tài)的打開或關(guān)閉,有時(shí)候還可以在運(yùn)行的中間進(jìn)行對(duì)象替換更新。(3) 模型的可移植性。因?yàn)槟P秃驮噲D是相對(duì)獨(dú)立的,所以能夠?qū)⒁粋€(gè)模型單獨(dú)地放到其它的平臺(tái)進(jìn)行工作。不過要做的是在新平臺(tái)上對(duì)視圖和控制器進(jìn)行新的修改。3.3 好生活的功能框架3.3.1 引導(dǎo)頁 引導(dǎo)頁向用戶展示了好生活公司的一些圖片,讓員工對(duì)好生活公司有更深的了解,讓員工對(duì)此app一目了然,好生活是企業(yè)給員工的福利,讓員工喜歡上此app。主要功能框架如圖3-4所示:不同功能設(shè)置福利

27、展示滑動(dòng)區(qū)信息詳情頁分類區(qū)我的設(shè)置首頁登陸界面引導(dǎo)頁圖3-4功能框架3.3.2 登陸界面 通過點(diǎn)擊引導(dǎo)頁的最后一個(gè)圖片進(jìn)入到登陸界面,在此界面用戶可以輸入用戶名和密碼進(jìn)行登陸,當(dāng)密碼忘記時(shí)可以點(diǎn)擊找回密碼進(jìn)行找回操作,也可注冊(cè)用戶,本界面和QQ的登陸界面具有類似功能。3.3.3 首頁 用戶登陸成功,會(huì)跳到此界面,用戶在此界面能看到一些展示的不同種類的商品,具體包括廣告、分類、福利幾個(gè)模塊。廣告主要是展示一些廣告圖片,減價(jià)商品,最新商品等,可以自動(dòng)滑動(dòng),用戶也可手動(dòng)滑動(dòng),通過點(diǎn)擊不同的圖片可以跳轉(zhuǎn)到下一個(gè)界面,下一界面是對(duì)此圖片的詳細(xì)信息的描述。 在廣告下面緊接著就是分類模塊,在此模塊中主要有八

28、種不同的分類,運(yùn)動(dòng)健身、文藝欣賞、健康體檢、休假療養(yǎng)、集中采購、業(yè)余培訓(xùn)、戶外運(yùn)動(dòng)、生日慰問。通過點(diǎn)擊不同的分類,找到用戶需要的種類和商品,這種設(shè)計(jì)是非常具有人性化的,可以根據(jù)不同的用戶展示不同的數(shù)據(jù)。 福利模塊分為最新和最熱兩部分,但是不同的兩部分都是以同一種格式顯示的,向用戶展示了商品圖片,商品名稱,商品價(jià)格和商品購買的數(shù)量,通過展示的部分,讓用戶胸有成竹,一目了然。3.3.4 個(gè)人界面 該頁面是個(gè)人信息界面,在此頁面中可以看到用戶名、真實(shí)姓名、頭像、我的訂單、福利賬單、用戶地址、密碼管理等功能。 通過點(diǎn)擊個(gè)人信息可以設(shè)置頭像,頭像可以根據(jù)相冊(cè)選擇,也可拍照上傳,我的訂單就是歷史訂單,可以

29、看到以前購買商品的歷史,密碼管理能夠?qū)崿F(xiàn)更改密碼的功能,跟平常所見到的更改密碼功能一致,意見反饋就是提交自己的意見,給公司提供建議的功能。最新消息可以查看消息,點(diǎn)擊這個(gè)按鈕是通過加載網(wǎng)頁的形勢(shì)展示數(shù)據(jù)的 。3.3.5 設(shè)置界面 設(shè)置界面相對(duì)其他的界面就顯得比較簡(jiǎn)單了,該界面可以檢查更新,退出登陸以及設(shè)置在2G/3G/4G下能否顯示圖片的功能,點(diǎn)擊此按鈕,可以控制是否加載圖片,該功能是對(duì)于用流量的用戶量身定做的,通過此按鈕的開關(guān),控制流量的多少,非常人性化的設(shè)計(jì)。退出登陸按鈕就是退出登陸,回到登陸界面,通這個(gè)按鈕可以切換不同的用戶。第4章 好生活客戶端設(shè)計(jì)與實(shí)現(xiàn)4.1 項(xiàng)目概述項(xiàng)目名稱:好生活a

30、pp項(xiàng)目需求:通過手機(jī)客戶端實(shí)現(xiàn)網(wǎng)上在線購物的功能,可以在手機(jī)上進(jìn)行物品的選擇、瀏覽、支付等操作。項(xiàng)目?jī)?yōu)化:加強(qiáng)用戶體驗(yàn),不同屏幕手機(jī)進(jìn)行適配,使外觀整體,減少資源的消耗,防止內(nèi)存泄漏,加強(qiáng)內(nèi)存的管理,滾動(dòng)視圖滾動(dòng)顯示更加流暢、清晰、自然。4.2 好生活詳細(xì)設(shè)計(jì)4.2.1 引導(dǎo)頁界面 引導(dǎo)頁是放置不同的圖片到UISsrollView上面,滑動(dòng)到最后一張圖片,通過touch事件處理,跳轉(zhuǎn)到登陸頁面,其中主要代碼為:_scrollView=UIScrollView allocinitWithFrame:UIScreen mainScreen.bounds; for (int i=0; i<4

31、; i+) LaunchImageView *imageView=LaunchImageView allocinitWithFrame:CGRectMake(VIEWWIDTH*i, 0, VIEWWIDTH, VIEWHEIGHT); imageView.image=UIImage imageNamed:NSString stringWithFormat:"1-%d.jpg",i+1; imageView.tag=i+1; imageView.delegate=self; _scrollView addSubview:imageView _scrollView.conte

32、ntSize = CGSizeMake(VIEWWIDTH*4, 0); _scrollView.showsHorizontalScrollIndicator = NO; _scrollView.pagingEnabled = YES; _scrollView.bounces = NO;self.view addSubview:_scrollView;引導(dǎo)頁圖如圖4-1所示:圖4-1 引導(dǎo)頁圖4.2.2 登陸頁面 該界面的登陸圖如圖4-2所示,登陸頁面則是由最基本的一些控件組成的,其中分別有UITextField,UIButton,UILabel等控件,通過獲取UITextField上的用戶名

33、和密碼,在UIButton的點(diǎn)擊事件里面進(jìn)行一系列的判斷和發(fā)送網(wǎng)絡(luò)請(qǐng)求,通過AFNetworking這個(gè)第三方的庫,向服務(wù)器發(fā)送請(qǐng)求,并得到服務(wù)器返回的數(shù)據(jù),將數(shù)據(jù)進(jìn)行解析,判斷是否登陸成功。如果登錄成功就會(huì)跳轉(zhuǎn)到下一個(gè)界面,反之,會(huì)彈出一個(gè)警告框告訴用戶登錄失敗的原因。此界面是很容易實(shí)現(xiàn)的,復(fù)雜的部分主要是對(duì)返回?cái)?shù)據(jù)的解析和判斷,下面是對(duì)登陸判斷的主要代碼: self.view endEditing:YES; NSString *nameString=_tfUserName.text stringByReplacingOccurrencesOfString:" " wit

34、hString:"" NSString *pwdString=_tfUserPwd.text stringByReplacingOccurrencesOfString:" " withString:"" if (nameString=nil|nameString.length<6|pwdString=nil|pwdString.length=0) NSLog("請(qǐng)?zhí)顚懻_的用戶名或密碼"); else sender setTitle:"登錄中." forState:UIControlSta

35、teNormal; HttpEngine shareHttpEngineloginWithName:_tfUserName.text password:_tfUserPwd.text extMsg:nil complete:(id json, NSString *jsession) if (jsession) /有cookies,登錄成功 NSLog("=%",json); sender setTitle:"登錄" forState:UIControlStateNormal; self goToTabBarController; else /登錄失敗 N

36、SLog("%",json); sender setTitle:"登錄" forState:UIControlStateNormal; ; 圖4-2 登陸圖4.2.3 首頁 登陸成功后,會(huì)跳轉(zhuǎn)到首頁,首頁及其他的幾個(gè)界面都是放到UITabBarController上 面的,UITabBarController是多視圖控制器,可以在一個(gè)界面上展示不同的界面,由于設(shè)計(jì)的合理性和用戶的良好體驗(yàn),所需要的UITabBarController是可以左右滑動(dòng)的,而系統(tǒng)給我們提供的遠(yuǎn)遠(yuǎn)不能達(dá)到要求,這時(shí),就用到了自定義UITabBarController,我創(chuàng)建了一個(gè)

37、類繼承于UIViewController,在此類中,添加一系列的屬性和方法,其中大量用到了代理的設(shè)計(jì)模式,完成了可以左右滑動(dòng)的自定義UITabBarController。下面兩個(gè)方法是自定義的方法,需要實(shí)現(xiàn):- (void)tabBar:(GLTabBar *)tabBar didSelectedButton:(NSUInteger)from to:(NSUInteger)to;- (void)addTabBarWithIcon:(NSString *)icon selIcon:(NSString *)selIcon labelText:(NSString *)labelText 當(dāng)然,在實(shí)際

38、的生活中,我們需要隱藏TabBar為了達(dá)到美觀的效果,此時(shí)因?yàn)樽远xUITabBarController,所以系統(tǒng)給我們提供的隱藏TabBar方法已經(jīng)不能用了,就需要自己手寫方法來進(jìn)行隱藏,下面是關(guān)于隱藏TabBar的方法:-(void)settingTabBarWhenPushed; /隱藏tabbar且設(shè)置scrollview可滑動(dòng)性 if (!_hideTabBar) _tabBarView.hidden=YES; _mainView.frame=CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); _mainView.scrollEnabled=

39、NO; _hideTabBar=YES; return; /顯示tabbar且設(shè)置scrollview可滑動(dòng)性 if (_hideTabBar) _tabBarView.hidden=NO; _mainView.frame = CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT - TAB_TAB_HEIGHT); _mainView.scrollEnabled=YES; _hideTabBar=NO; 此頁面整體是一個(gè)UITableView,通過自定義單元格的方式在該頁面中展示不同的效果,最上面的單元格上放的是UIScrollView,通過網(wǎng)絡(luò)請(qǐng)求,得到

40、不同的圖片放置到UIScrollView上,通過開啟定時(shí)器,讓該控件自動(dòng)滑動(dòng)來改變所展示的圖片,這里就要用到UIScrollView的一個(gè)屬性contentoffert偏移量,由偏移量來決定展示的是哪一張圖片。 中間是在自定義的單元格上放置8個(gè)大小相同的button,這里的核心就是autolayout的適配,通過此方法讓8個(gè)button間距相同,大小隨屏幕適配。點(diǎn)擊不同的按鈕會(huì)跳轉(zhuǎn)到下一個(gè)界面,由于該界面用到的非常多,樣式相同,只不過改變展示的內(nèi)容,所以對(duì)此頁面進(jìn)行封裝,通過傳遞參數(shù)的不同,來改變?cè)摻缑骘@示的數(shù)據(jù)。點(diǎn)擊該界面同樣會(huì)跳轉(zhuǎn)到另外一個(gè)新界面,同理,由于新界面也是用到很多次,所以也對(duì)此

41、進(jìn)行封裝,新界面要實(shí)現(xiàn)的跟淘寶詳情非常相似,可以上拉刷新數(shù)據(jù),下面的數(shù)據(jù)是用HTML5的方法來展示的。 最下面就相對(duì)簡(jiǎn)單一點(diǎn)了,跟福利界面大致相似,可通過重用福利的頁面來實(shí)現(xiàn),如圖4-3所示:圖4-3首頁展示4.2.4 福利頁面 福利主要是向服務(wù)器發(fā)送數(shù)據(jù),解析數(shù)據(jù)并展示數(shù)據(jù),其中是將數(shù)據(jù)在UITableView上顯示,這時(shí)由于展示數(shù)據(jù)的美觀和要求,就需要自定義單元格,不同的數(shù)據(jù)顯示在不同的單元格上面,UITableView具有重用單元格的特性,如果屏幕上能顯示10個(gè)單元格,則UITableView只會(huì)創(chuàng)建11個(gè)單元格,也就是n+1個(gè),當(dāng)滑動(dòng)到第12個(gè)單元格時(shí)就會(huì)復(fù)用第一個(gè)單元格對(duì)象。UITa

42、bleView中有個(gè)單元格池這么一個(gè)概念,UITableView調(diào)用協(xié)議方法獲取單元格時(shí),先從池子中查找是否有可復(fù)用的單元格,如果有則復(fù)用,如果沒有則創(chuàng)建一個(gè)單元格對(duì)象。下面時(shí)UITableView的一些協(xié)議方法,必須實(shí)現(xiàn),如果不實(shí)現(xiàn),程序就會(huì)Crash:#pragma mark-UITableView協(xié)議方法-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section return self.dataArray.count;-(UITableViewCell *)tableVie

43、w:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath WelfareDataCell *cell=tableView dequeueReusableCellWithIdentifier:"welfareDataCell" if (!cell) cell=NSBundle mainBundleloadNibNamed:"WelfareDataCell" owner:nil options:nilfirstObject; GLWelfare *welfare=sel

44、f.dataArrayindexPath.row; Label.text=; cell.headerImage sd_setImageWithURL:NSURL URLWithString:welfare.index_img; cell.priceLabel.text=NSString stringWithFormat:"%",welfare.price; cell.numberLabel.text=NSString stringWithFormat:"累計(jì)訂購:%",welfare.order_num; ret

45、urn cell;4.2.5 個(gè)人和設(shè)置 個(gè)人和設(shè)置也是通過UITableView實(shí)現(xiàn)的,在不同的行數(shù)顯示不同的內(nèi)容,同樣用到UITableView的重用機(jī)制,設(shè)置界面里面用到的是KVO,KVO是鍵值觀察,是一種能使得對(duì)象獲取到其他對(duì)象屬性變化的通知機(jī)制,用于1對(duì)多情況下通信,且通信對(duì)象之間不需要建立關(guān)系。第5章 測(cè)試 在模擬器中可以測(cè)試應(yīng)用程序的基本操作,但如果要上傳到AppStore,還是需要在連接到Mac電腦上的真機(jī)上進(jìn)行測(cè)試的。由于真機(jī)提供的測(cè)試環(huán)境就是用戶手中的設(shè)備,所以應(yīng)用程序在真機(jī)中的表現(xiàn),如果設(shè)備和版本號(hào)一致的話,兩者應(yīng)該是一致的。所以說真機(jī)調(diào)試是必須的。因?yàn)閕OS simul

46、ator只是模擬器,并不能完美模擬真實(shí)的情況。理想情況下,應(yīng)該在所有要支持的設(shè)備和iOS版本上,進(jìn)行應(yīng)用程序的測(cè)試。一個(gè)應(yīng)用或多或少都有些bug,一個(gè)應(yīng)用程序要想沒有bug,必須經(jīng)過測(cè)試和修改。在測(cè)試過程中,需要多方面,多角度的進(jìn)行測(cè)試,力求解決所有的bug,為用戶增加更舒適的體驗(yàn)。5.1 真機(jī)調(diào)試的前提要在真機(jī)上進(jìn)行測(cè)試,首先要加入iOS Developer Program,這樣就可以使用Xcode在設(shè)備上調(diào)試了。必須從apple獲得開發(fā)證書,才能在設(shè)備上運(yùn)行應(yīng)用程序。證書作為簽名之用,而應(yīng)用程序必須經(jīng)過加密簽名,才能在設(shè)備上運(yùn)行??赏ㄟ^Xcode管理器窗口獲得此證書。因?yàn)樘O果官方對(duì)安全性的

47、重視,所以真機(jī)調(diào)試相對(duì)于模擬器調(diào)試來說是非常麻煩的,首先需要鑰匙串訪問,選擇證書助理,點(diǎn)擊為其他人創(chuàng)建證書,根據(jù)提示繼續(xù)操作,會(huì)在桌面上生成CertificateSigningRequest.certSigningRequest公鑰文件,然后到證書配置頁面添加證書,選擇剛剛在桌面上鑰匙串申請(qǐng)的certSigningRequest,點(diǎn)擊繼續(xù)。將配置好的證書下載安裝,下面要選擇需要調(diào)試的iphone設(shè)備,將設(shè)備名和id按要求輸入,然后創(chuàng)建appid。配置概要文件,是應(yīng)用在設(shè)備上編譯時(shí)使用的,在此有兩個(gè)選項(xiàng),分別是發(fā)布用和調(diào)試用,我們?cè)俅芜x擇all,然后點(diǎn)擊下載配置概要文件到本地即可,下載完成后有2

48、個(gè)文件雙擊并安裝,接下來,我們需要將配置概要文件導(dǎo)入到XCode中,雙擊下載的配置概要文件就可以將文件導(dǎo)入XCode,然后可以通過XCode的菜單Window->Organizer管理。完成了需要真機(jī)調(diào)試的前提條件,我們就可以在真機(jī)上進(jìn)行調(diào)試了,真機(jī)調(diào)試具有許多模擬器不能完成的功能,例如定位、打電話、發(fā)信息、拍照等,當(dāng)我們需要調(diào)試這些功能時(shí)就必須要用到真機(jī),這就是模擬器的局限性。為了產(chǎn)品能夠順利上架,通過AppStore的檢測(cè),就必須要進(jìn)行真機(jī)調(diào)試,真機(jī)調(diào)試能夠更方便,更順利的找到問題,為我們解決問題提供參照。 5.2 調(diào)試過程 在對(duì)此app開發(fā)完成時(shí),并不意味著真正的結(jié)束,還需要對(duì)此a

49、pp進(jìn)行多次不同的測(cè)試,首先,要根據(jù)不同情況具體對(duì)待,對(duì)引導(dǎo)頁來說,因?yàn)橐龑?dǎo)頁是不同的圖片放到scrollview上的,所以要多次多方向的滑動(dòng)該頁面,并保持速度的變化,看程序是否crash。 登陸界面的測(cè)試工作是非常重要的,在登陸界面很容易出現(xiàn)bug,可能因?yàn)榇a的判斷不準(zhǔn)確導(dǎo)致登陸的異常,所以要進(jìn)行空白輸入測(cè)試,錯(cuò)誤用戶名測(cè)試,錯(cuò)誤密碼測(cè)試,以及在有無網(wǎng)絡(luò)的情況下進(jìn)行測(cè)試等,這些都是測(cè)試的重點(diǎn),而且在網(wǎng)路請(qǐng)求的時(shí)候?qū)ζ聊贿M(jìn)行點(diǎn)擊,測(cè)試有無bug的出現(xiàn)。如圖5-1 測(cè)試圖所示,根據(jù)條件的不同彈出的警告框會(huì)出現(xiàn)不同的字符串。 首頁、我的頁面及設(shè)置頁面的測(cè)試跟引導(dǎo)頁相似,也需要多次滑動(dòng)和點(diǎn)擊頁面,觀察程序是否會(huì)crash,因?yàn)閿?shù)據(jù)請(qǐng)求的時(shí)候會(huì)用到MBProgressHUD,所以要對(duì)試圖進(jìn)行測(cè)試,判斷是否將MBProgressHUD結(jié)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論