畢業(yè)論文-基于iOS移動(dòng)端的常用計(jì)量單位換算app系統(tǒng)_第1頁
畢業(yè)論文-基于iOS移動(dòng)端的常用計(jì)量單位換算app系統(tǒng)_第2頁
畢業(yè)論文-基于iOS移動(dòng)端的常用計(jì)量單位換算app系統(tǒng)_第3頁
畢業(yè)論文-基于iOS移動(dòng)端的常用計(jì)量單位換算app系統(tǒng)_第4頁
畢業(yè)論文-基于iOS移動(dòng)端的常用計(jì)量單位換算app系統(tǒng)_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、鹽城師范學(xué)院畢業(yè)設(shè)計(jì)畢業(yè)設(shè)計(jì)基于iOS移動(dòng)端的常用計(jì)量單位換算app系統(tǒng)學(xué)生姓名 學(xué) 院 專 業(yè) 班 級(jí) 學(xué) 號(hào) 指導(dǎo)教師 2016年5月10日基于iOS移動(dòng)端的常用計(jì)量單位換算app系統(tǒng)摘 要移動(dòng)設(shè)備因其便攜性,使用地點(diǎn)非常廣泛,基本覆蓋了一個(gè)人一天的活動(dòng)范圍。手機(jī)和電腦相比,在交通工具上、戶外公共場(chǎng)所等地點(diǎn)應(yīng)用更為方便,用戶的使用率相對(duì)更高。這時(shí)手機(jī)app的出現(xiàn)更適合人們?nèi)粘I畹氖褂?。本設(shè)計(jì)在整個(gè)開發(fā)過程中采用的是iOS移動(dòng)平臺(tái),采用Objectc在Xcode上編寫app系統(tǒng)。實(shí)現(xiàn)了常用計(jì)量單位的換算功能,例如米換算成厘米,美元兌換人民幣等等。結(jié)構(gòu)上采用MVC架構(gòu),采用控制器完成模型和界

2、面之間的數(shù)據(jù)傳遞。當(dāng)用戶選擇一種單位并輸入數(shù)值,app會(huì)自動(dòng)換算響應(yīng)的數(shù)據(jù)并顯示在其下方供用戶參考。同時(shí)具備掃一掃功能,可以讓app獲取二維碼的信息。用戶還可以利用分享功能,把使用情況分享到微信或新浪上與自己的好友互動(dòng)。本論文將對(duì)設(shè)計(jì)進(jìn)行詳細(xì)分析,闡述如何建立完整的常用計(jì)量單位換算的app系統(tǒng)?!娟P(guān)鍵詞】單位換算;iOS;appCommonly used measuring unit conversion app system based on the iOS mobile terminalAbstractBecause of its portability, mobile devices a

3、re widely used, basic coverage of a person a day of activities. Mobile phones and computers, compared to the traffic tools, outdoor public places and other places more convenient to use, the users usage is relatively high. At this time the emergence of mobile phone app is more suitable for peoples d

4、aily life.This design in the entire development process using iOS mobile platform, using the Object - c write app on Xcode system. Realize the conversion function of common unit of measurement, such as meters converted to centimeters, for dollars into RMB and so on. Structure USES the MVC architectu

5、re, using the controller to complete the model and the interface between the data transfer. When the user select a unit and input values, the app will automatically response data conversion and displayed in the below reference for users. Have scan function at the same time, can let the app for qr co

6、de information. Users can also use of sharing function, usage share to WeChat or on sina interact with their friends. To design a detailed analysis, this paper expounds how to establish a comprehensive system to commonly used measuring unit conversion app. Keywords unit conversion, iOS, app 目 錄 TOC

7、o 1-3 h z HYPERLINK l _Toc452678719 1課題概述 PAGEREF _Toc452678719 h 1 HYPERLINK l _Toc452678720 1.1研究的背景及意義 PAGEREF _Toc452678720 h 1 HYPERLINK l _Toc452678721 1.2研究思路 PAGEREF _Toc452678721 h 1 HYPERLINK l _Toc452678722 1.3系統(tǒng)目標(biāo) PAGEREF _Toc452678722 h 1 HYPERLINK l _Toc452678723 1.4關(guān)于iOS PAGEREF _Toc4

8、52678723 h 2 HYPERLINK l _Toc452678724 2系統(tǒng)技術(shù) PAGEREF _Toc452678724 h 2 HYPERLINK l _Toc452678725 2.1 設(shè)計(jì)思路 PAGEREF _Toc452678725 h 2 HYPERLINK l _Toc452678726 2.2系統(tǒng)分析 PAGEREF _Toc452678726 h 2 HYPERLINK l _Toc452678727 2.2.1系統(tǒng)介紹 PAGEREF _Toc452678727 h 2 HYPERLINK l _Toc452678728 2.2.2功能需求 PAGEREF _T

9、oc452678728 h 3 HYPERLINK l _Toc452678729 2.2.3可行性分析 PAGEREF _Toc452678729 h 4 HYPERLINK l _Toc452678730 2.3系統(tǒng)功能模塊劃分 PAGEREF _Toc452678730 h 4 HYPERLINK l _Toc452678731 2.4關(guān)鍵技術(shù) PAGEREF _Toc452678731 h 4 HYPERLINK l _Toc452678732 2.4.1系統(tǒng)技術(shù)簡(jiǎn)介 PAGEREF _Toc452678732 h 4 HYPERLINK l _Toc452678733 2.5開發(fā)工具

10、Xcode PAGEREF _Toc452678733 h 7 HYPERLINK l _Toc452678734 3 結(jié)構(gòu)分析和設(shè)計(jì) PAGEREF _Toc452678734 h 8 HYPERLINK l _Toc452678735 3.1換算功能結(jié)構(gòu)分析 PAGEREF _Toc452678735 h 8 HYPERLINK l _Toc452678736 3.2頁面結(jié)構(gòu)設(shè)計(jì) PAGEREF _Toc452678736 h 8 HYPERLINK l _Toc452678737 3.3邏輯結(jié)構(gòu)設(shè)計(jì) PAGEREF _Toc452678737 h 8 HYPERLINK l _Toc45

11、2678738 3.4 文件info.plist PAGEREF _Toc452678738 h 10 HYPERLINK l _Toc452678739 4系統(tǒng)實(shí)現(xiàn) PAGEREF _Toc452678739 h 10 HYPERLINK l _Toc452678740 4.1基礎(chǔ)文件 PAGEREF _Toc452678740 h 10 HYPERLINK l _Toc452678741 4.2系統(tǒng)功能設(shè)計(jì) PAGEREF _Toc452678741 h 11 HYPERLINK l _Toc452678742 4.2.1系統(tǒng)主界面 PAGEREF _Toc452678742 h 11 H

12、YPERLINK l _Toc452678743 4.2.2匯率換算設(shè)計(jì) PAGEREF _Toc452678743 h 12 HYPERLINK l _Toc452678744 4.2.3普通換算設(shè)計(jì) PAGEREF _Toc452678744 h 16 HYPERLINK l _Toc452678745 4.2.4旋轉(zhuǎn)動(dòng)畫 PAGEREF _Toc452678745 h 17 HYPERLINK l _Toc452678746 4.2.5分享功能 PAGEREF _Toc452678746 h 18 HYPERLINK l _Toc452678747 4.2.6掃一掃功能 PAGEREF

13、_Toc452678747 h 20 HYPERLINK l _Toc452678748 4.2.7 3dTouch功能 PAGEREF _Toc452678748 h 23 HYPERLINK l _Toc452678749 5系統(tǒng)測(cè)試 PAGEREF _Toc452678749 h 23 HYPERLINK l _Toc452678750 5.1 數(shù)據(jù)換算測(cè)試 PAGEREF _Toc452678750 h 24 HYPERLINK l _Toc452678751 5.2 界面切換測(cè)試 PAGEREF _Toc452678751 h 24 HYPERLINK l _Toc452678752

14、 5.3 分享測(cè)試 PAGEREF _Toc452678752 h 25 HYPERLINK l _Toc452678753 5.4 掃描測(cè)試 PAGEREF _Toc452678753 h 25 HYPERLINK l _Toc452678754 6結(jié)論 PAGEREF _Toc452678754 h 25 HYPERLINK l _Toc452678755 參考文獻(xiàn) PAGEREF _Toc452678755 h 27 HYPERLINK l _Toc452678756 致 謝 PAGEREF _Toc452678756 h 28第28頁 ,共28頁1課題概述1.1研究的背景及意義移動(dòng)互聯(lián)

15、網(wǎng)時(shí)代,移動(dòng)設(shè)備已經(jīng)普及,適合移動(dòng)學(xué)習(xí)的資源在網(wǎng)絡(luò)上也備受關(guān)注。這篇文章是在非正式學(xué)習(xí)與微型學(xué)習(xí)理論的基礎(chǔ)上,根據(jù)移動(dòng)開發(fā)人員的特征從而提出的移動(dòng)學(xué)習(xí)資源設(shè)計(jì)的原則和流程1。在這些理論的基礎(chǔ)上、充分利用iOS的個(gè)性化來設(shè)計(jì)和開發(fā)了基于iOS的移動(dòng)功能軟件,并且介紹了個(gè)性化手勢(shì)技術(shù)的實(shí)現(xiàn)。生活中我們有時(shí)需要重量或長(zhǎng)度等的換算,遠(yuǎn)離學(xué)校后可能會(huì)使我們已經(jīng)忘記數(shù)據(jù)之間的換算公式。利用本app可以使我們輕松換算數(shù)據(jù)于各個(gè)相關(guān)單位之間。大大方便了我們的生活。1.2研究思路課題研究的思路是只要輸入用戶想要轉(zhuǎn)換的數(shù)值,相關(guān)單位的換算結(jié)果就會(huì)在同一界面即時(shí)顯示,直觀方便?;締挝话垂?、英制分組,貨幣則按大洲

16、分組,方便查找。課題研究的方法是利用OC語言,使用Xcode,實(shí)現(xiàn)數(shù)據(jù)的換算和界面的展示。把換算都寫進(jìn)后臺(tái),前臺(tái)頁面顯示用戶關(guān)心的數(shù)據(jù)換算過后的結(jié)果。課題研究的要求是不用再記那些枯燥的公式了,為用戶提供良好的使用感覺。更加貼近人們的生活,推動(dòng)人們的生活水平更加的提高。1.3系統(tǒng)目標(biāo)我理想中的常用計(jì)量單位換算app最主要的特性就是要方便快捷。用戶即使不會(huì)公式也能找到自己想要的結(jié)果。本app要提供全面的日常生活中可能用到的計(jì)量單位,幫助用戶快捷生活。界面美觀、功能實(shí)用、操作簡(jiǎn)單、使用靈活調(diào)用匯率api時(shí)響應(yīng)快速用戶對(duì)重量、長(zhǎng)度、速度等計(jì)量單位換算時(shí)顯示世界通用的標(biāo)準(zhǔn)單位分享應(yīng)用到朋友圈中,與朋友互

17、動(dòng)掃一掃,獲取信息或者跳轉(zhuǎn)網(wǎng)頁識(shí)別手勢(shì)左劃,進(jìn)行返回操作。動(dòng)畫切換單位換算數(shù)據(jù)刷新時(shí)有旋轉(zhuǎn)動(dòng)畫1.4關(guān)于iOSiOS是由蘋果公司開發(fā)的移動(dòng)操作系統(tǒng)。iOS最早于2007年1月9日面世。最初是設(shè)計(jì)搭載在蘋果手機(jī)上運(yùn)行。后來陸續(xù)被用于蘋果的其他產(chǎn)品上。iOS是屬于類Unix的商業(yè)操作系統(tǒng)。軟件支持的語言有C、C+、Objective-C、Objective-C和swift。目前最新的版本為iOS9.3。2系統(tǒng)技術(shù)2.1 設(shè)計(jì)思路常用計(jì)量單位換算app是一個(gè)簡(jiǎn)單的應(yīng)用系統(tǒng),主要提供全面的換算來吸引用戶。用戶只使用一種app就可以擁有匯率、長(zhǎng)度、面積、體積等換算功能。該設(shè)計(jì)包括了以下單位的換算功能:匯

18、率換算功能:各個(gè)國(guó)家和地區(qū)錢幣的換算長(zhǎng)度換算功能:常用長(zhǎng)度之間的換算面積換算功能:常用面積之間的換算體積換算功能:常用體積之間的換算溫度換算功能:常用溫度之間的換算速度換算功能:常用速度之間的換算重量換算功能:常用重量之間的換算壓強(qiáng)換算功能:常用壓強(qiáng)之間的換算功率換算功能:常用功率之間的換算能量換算功能:常用能量之間的換算力換算功能:常用力之間的換算電阻換算功能:常用電阻之間的換算2.2系統(tǒng)分析2.2.1系統(tǒng)介紹該系統(tǒng)主要是面向日常生活中遇到的瑣事,比如外匯,一般用戶只知道大概匯率。但是匯率是實(shí)時(shí)改變的。利用本系統(tǒng)就可以輕松獲取匯率的詳細(xì)信息。再比如進(jìn)口食品,外國(guó)用的計(jì)量單位和國(guó)內(nèi)略有不同,比

19、如一盎司是多少kg呢。類似的這些情況都可以輕松解決。2.2.2功能需求 該系統(tǒng)基本覆蓋了日常生活中需要用到的單位換算,并且把掃一掃功能加入app,給用戶更好的使用體驗(yàn)。該系統(tǒng)是在MVC模式的基礎(chǔ)開發(fā)而成。用戶只能看到View界面展示的換算結(jié)果 換算功能:基本換算功能:類似長(zhǎng)度,面積等單位。相互換算成比例。溫度換算功能:溫度之間的換算各有差別,不能統(tǒng)一的計(jì)算,需要分別處理。匯率換算功能:錢幣之間的換算是實(shí)時(shí)發(fā)生變化的,此功能每次使用前都需要刷新當(dāng)前數(shù)據(jù)。額外功能: 分享功能:把自己的使用情況分享到社交平臺(tái)。掃描功能:掃描二維碼獲取其中信息。3d Touch功能:重壓應(yīng)用圖標(biāo),彈出快捷操作菜單。以

20、下是系統(tǒng)的流程圖和用例圖:圖2-1 功能流程圖圖2-2 系統(tǒng)用例圖2.2.3可行性分析本系統(tǒng)主要考慮技術(shù)可行性。本系統(tǒng)在行業(yè)內(nèi)已經(jīng)具備類似的軟件,所以本系統(tǒng)時(shí)是可以完成的。同時(shí),技術(shù)難點(diǎn)就是幾個(gè)功能模塊中數(shù)據(jù)的運(yùn)算。實(shí)時(shí)變化的需要使用網(wǎng)絡(luò)的api接口。項(xiàng)目的規(guī)模不是很大,主要用戶全體為日常生活的普通百姓。對(duì)于信息化社會(huì)來說,人們有必要融入到快節(jié)奏的生活當(dāng)中。方便快捷的系統(tǒng)才能更好的適應(yīng)需求。提高效率,提升競(jìng)爭(zhēng)力才是一個(gè)好的應(yīng)用應(yīng)該帶來的效果。常用計(jì)量單位換算相較于網(wǎng)絡(luò)查找的優(yōu)勢(shì)在于本系統(tǒng)全面的包括各種換算,只在一個(gè)app中就可以得到多種換算省去了上網(wǎng)查找的時(shí)間。而且界面簡(jiǎn)單,上手迅速。所以本系

21、統(tǒng)時(shí)完全可行的。2.3系統(tǒng)功能模塊劃分常用計(jì)量單位換算系統(tǒng)從功能上分為:換算功能,分享功能,掃描功能。里面還有一些具體的功能。2.4關(guān)鍵技術(shù)2.4.1系統(tǒng)技術(shù)簡(jiǎn)介MVC設(shè)計(jì)模式M是指模型(model),V是指視圖(view),C是指控制器(controller),使用MVC模式的目的是將模型和視圖頁面進(jìn)行代碼分離2,從而使同一個(gè)系統(tǒng)可以采用不同的表現(xiàn)形式。C存在的目的則是確保M和V的同步,一旦M改變,V應(yīng)該同步更新。如圖2-3:圖2-3 MVC設(shè)計(jì)框架JSON JSON是一種輕量級(jí)的數(shù)據(jù)交換格式3。它基于ECMAScript的一個(gè)子集。 JSON采用的是完全獨(dú)立于代碼語言的文本格式,但是也使用

22、了近似C語言家族的習(xí)慣(包括C、C+、C#、Perl、Python、Java、JavaScript等)。JSON是目前理想的數(shù)據(jù)交換語言。 方便讀寫,也方便開發(fā)工具的解析和生成(一般用于跨平臺(tái)的數(shù)據(jù)傳輸)。StoryboardStoryboard可以描述各種場(chǎng)景之間的轉(zhuǎn)換,這種轉(zhuǎn)換被稱作”segue”, 通過簡(jiǎn)單的ctrl-dragging就能搞定,減少代碼量。Storyboard支持table view的prototype cell,這意味著可以在storyboard中編輯cell,減少代碼量。Storyboard非常適合做UI設(shè)計(jì),界面樣式可以直觀的顯示出來,控件之間的距離、界面的色彩搭配

23、都可以很好的得到控制。圖2-4展示了Storyboard如何管理各個(gè)界面。圖2-4 Storyboard中編輯界面UITableViewUITableView有兩個(gè)Delegate分別為:dataSource和delegate。dataSource是UITableViewDataSource類型,主要為UITableView提供顯示用的數(shù)據(jù)(UITableViewCell),指定UITableViewCell支持的編輯操作類型(insert,delete和reordering),并且根據(jù)用戶的操作進(jìn)行對(duì)應(yīng)的數(shù)據(jù)更新操作,如果數(shù)據(jù)沒有進(jìn)行正確的更新操作,可能會(huì)導(dǎo)致顯示異常,甚至程序崩潰。dele

24、gate是UITableViewDelegate類型,主要提供一些可選的方法,用來控制tableView的選擇、指定section的頭和尾的顯示以及協(xié)助完成cell的刪除和排序等功能。提到UITableView,就必須的說一說NSIndexPath。UITableView聲明了一個(gè)NSIndexPath的類別,主要用來標(biāo)識(shí)當(dāng)前cell的在tableView中的位置,該類別有section和row兩個(gè)屬性,前者標(biāo)識(shí)當(dāng)前cell處于第幾個(gè)section中,后者代表在該section中的第幾行。可以簡(jiǎn)單的理解為行和列。UITableView只能有一列數(shù)據(jù)(cell),而且只支持縱向的滑動(dòng),當(dāng)創(chuàng)建的t

25、ablView第一次顯示的時(shí)候,我們需要調(diào)用其reloadData方法,強(qiáng)制刷新一次,從而使tableView的數(shù)據(jù)更新到最新狀態(tài)。轉(zhuǎn)場(chǎng)動(dòng)畫在ios中轉(zhuǎn)場(chǎng)動(dòng)畫占了很大的動(dòng)畫比例。比如模態(tài)推送的dismiss和present、導(dǎo)航制控器(Nav)的push和pop等。導(dǎo)航控制器如圖2-5:圖2-5 導(dǎo)航控制器轉(zhuǎn)場(chǎng)動(dòng)畫都要有相應(yīng)的過渡對(duì)象。在方法中,寫對(duì)應(yīng)的動(dòng)畫邏輯。利用控制器獲取和設(shè)置button和frame來設(shè)置動(dòng)畫的開始結(jié)束的位置。KVO和KVCKVC的全稱是Key-value coding.是一個(gè)非正式的Protocol。它提供一種方式讓我們來間接的訪問對(duì)象的屬性。KVC是使用字符串來識(shí)別

26、對(duì)象的屬性,而不是通過調(diào)用訪問方法或者直接訪問實(shí)例變量。從本質(zhì)上來說,KVC定義了模式和方法簽名,實(shí)現(xiàn)應(yīng)用程序的訪問方法。KVO的全稱是Key-value observing。它是通過允許將對(duì)象更改通知其他對(duì)象的特定屬性。常用于模型和控制器在app中的通信4。KVO是基于KVC實(shí)現(xiàn)的關(guān)鍵技術(shù)之一。2.5開發(fā)工具XcodeXcode是蘋果公司在Mac OS X下的集成開發(fā)環(huán)境(IDE)引擎5。它負(fù)責(zé)處理從工程創(chuàng)建到工程的最終部署這之間的大多數(shù)工作。我們可以通過這個(gè)Xcode來完成如下工作:1)創(chuàng)建和管理項(xiàng)目,包括對(duì)目標(biāo)的需求、依賴性和編寫風(fēng)格的設(shè)定。2)在具有語法染色、自動(dòng)縮進(jìn)等功能的編輯器上編

27、寫源代碼。3)在工程的不同文件中進(jìn)行查詢和檢索,包括頭文件和文檔。4)連編工程5)在圖形化的源代碼級(jí)調(diào)試器(Storyboard)上調(diào)試工程Xcode 支持編譯的語言C、C+6、Objective-C、Objective-C+、和Java編寫的源代碼組成的工程,還可以生成Mac OS X支持的所有類型的執(zhí)行代碼,包括命令行工具、框架、內(nèi)核擴(kuò)展、插件、程序包、和應(yīng)用程序。Xcode允許對(duì)連編和調(diào)試工具、可執(zhí)行文件的打包方式(包括信息屬性列表和本地化程序包)、連編過程(包括拷貝文件、腳本文件處理、和其它連編階段)、以及用戶界面(包括分立和多視圖的代碼編輯器)進(jìn)行幾乎無限的自定義;還支持幾個(gè)源代碼管

28、理系統(tǒng)(其中有CVS和Perforce),可以將文件追加到代碼庫(其中有SVN或者Github)、提交修改、獲取更新版本、以及進(jìn)行版本的比較。3 結(jié)構(gòu)分析和設(shè)計(jì) 所謂分析,是指目標(biāo)系統(tǒng)必須滿足的所有功能邏輯和限制,通常包括功能要求、性能要求、可靠性要求、安全保密7要求等。3.1換算功能結(jié)構(gòu)分析以下是換算功能的結(jié)構(gòu):標(biāo)準(zhǔn)信息包括的數(shù)據(jù)項(xiàng)有英制、公制、日制、市制、航海、天文等單位信息包括的數(shù)據(jù)項(xiàng)為每個(gè)標(biāo)準(zhǔn)下對(duì)應(yīng)的單位狀態(tài)信息包括的數(shù)據(jù)項(xiàng)有狀態(tài)標(biāo)識(shí)符,狀態(tài)圖片等數(shù)據(jù)信息包括的數(shù)據(jù)項(xiàng)為每個(gè)單位所對(duì)應(yīng)的數(shù)字3.2頁面結(jié)構(gòu)設(shè)計(jì)根據(jù)需求分析,我設(shè)計(jì)了滿足用戶需求的各類實(shí)體,為下面邏輯結(jié)構(gòu)的設(shè)計(jì)奠基。頁面采用

29、上下結(jié)構(gòu),頁面上部分由用戶輸入換算數(shù)據(jù),下部分則是系統(tǒng)來顯示換算的結(jié)果。3.3邏輯結(jié)構(gòu)設(shè)計(jì)根據(jù)對(duì)需求的分析,為了方便客戶操作,本系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)具體設(shè)計(jì)如下: 表3-1數(shù)組字段介紹字段名數(shù)據(jù)類型注釋arrAllNSArray標(biāo)準(zhǔn)數(shù)組arrmiNSArray英制數(shù)組arrkmNSArray公制數(shù)組arrriNSArray日制數(shù)組arrliNSArray市制數(shù)組arrnmiNSArray航海數(shù)組arrpcNSArray天文數(shù)組表3-2界面信息介紹字段名數(shù)據(jù)類型注釋dataAllNSMutableDictionary數(shù)據(jù)字典numberUITextField輸入數(shù)據(jù)engNameUILabel英文單位

30、chaNameUILabel中文單位tableViewUITableView數(shù)據(jù)界面MyViewUIView基礎(chǔ)界面3.4 文件info.plist圖3-1 info配置表 每個(gè)iOS的application都是用Info.plist文件(圖3-1)來存儲(chǔ)上圖中的信息,從命名上也可以猜到Info.plist就是“屬性列表”。iOS用Info.plist來決定bundle所顯示的icon,當(dāng)前app可以解析的文檔類型,等等應(yīng)用的基礎(chǔ)信息。Info.plist本身是一種結(jié)構(gòu)化的文本文件,它包含了一些重要的配置信息。Info.plist文件在大部分的情況下是以UTF-8進(jìn)行編碼,它的配置內(nèi)容其實(shí)是以

31、XML格式來生成的。XML的根節(jié)點(diǎn)是一個(gè)詞典(dictionary),包含描述bundle所有方面的keys和values。系統(tǒng)讀取該文件,并獲取app的配置信息。4系統(tǒng)實(shí)現(xiàn)4.1基礎(chǔ)文件AppDelegate是app的起點(diǎn),系統(tǒng)完成啟動(dòng)任務(wù)后,就會(huì)把處理權(quán)交給用戶.其中代碼如下:利用StoryBoard創(chuàng)建起始界面:UIStoryboard *storyboard=UIStoryboard storyboardWithName:Main bundle:NSBundle mainBundle;rootController=storyboard instantiateViewController

32、WithIdentifier:RootViewController;self.window.rootViewController=rootController; UIApplication sharedApplicationsetStatusBarStyle:UIStatusBarStyleLightContent animated:NO;運(yùn)行開機(jī)動(dòng)畫:CoreLaunchLite animWithWindow:self.window image:nil;4.2系統(tǒng)功能設(shè)計(jì)4.2.1系統(tǒng)主界面系統(tǒng)首頁的最頂端像其他app一樣顯示手機(jī)時(shí)間和電量, 稍下方是界面名稱。名稱左側(cè)是分享功能,右側(cè)是設(shè)置

33、功能。狀態(tài)欄下方是功能欄。分成3*4的“九宮格”模式的12種單位換算。用戶可以點(diǎn)擊選擇跳轉(zhuǎn)相應(yīng)界面。圖4-1系統(tǒng)主界面其中如果是第一次登錄會(huì)有使用提示界面。如何判斷是否為第一次使用的代碼如下:/判斷是不是第一次啟動(dòng)應(yīng)用if(!NSUserDefaults standardUserDefaults boolForKey:firstLaunch) NSUserDefaults standardUserDefaults setBool:YES forKey:firstLaunch; NSLog(第一次啟動(dòng)); _markView = GuideView allocinitWithFrame:self

34、.view.bounds; _markView.model = GuideViewCleanModeRoundRect; _markView.markText = 歡迎使用.n第一次使用將進(jìn)入引導(dǎo); self.view addSubview:_markView; else NSLog(不是第一次啟動(dòng)); 反映用戶的登錄狀態(tài)主要是用NSUserDefaults來存儲(chǔ)的。如果是第一次登錄,NSUserDefaults里面不會(huì)有數(shù)據(jù)。如果有數(shù)據(jù)就意味著不是第一次登錄了。4.2.2匯率換算設(shè)計(jì)在系統(tǒng)功能選擇界面點(diǎn)擊匯率按鈕,app會(huì)push到匯率的view。在新的界面中來完成用戶的換算任務(wù)。左上角設(shè)有

35、返回按鈕。右上角有刷新按鈕。因?yàn)閰R率的換算是根據(jù)銀行發(fā)布的比例來計(jì)算,所以需要網(wǎng)絡(luò)8來獲取當(dāng)前時(shí)間的換算比例。匯率的主界面如圖4-2所示:圖4-2 匯率主界面其中匯率主界面的核心代碼如下:為HeaderView設(shè)置高度:-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section return 50;為數(shù)據(jù)cell設(shè)置高度:-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPa

36、th *)indexPath return 50;為數(shù)據(jù)cell賦值,這里使用了遍歷的過程。為每一個(gè)cell添加參數(shù)shuzi用來顯示換算的數(shù)據(jù)。其中button顯示英文單位,lab2顯示中文單位。為了保證數(shù)值不會(huì)過大或者過小,使用if條件判斷,如果超出限制則顯示N/A。- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath MyCell *cell = tableView dequeueReusableCellWithIdentifier:le

37、ngthCell forIndexPath:indexPath;/cell界面設(shè)計(jì)UIButton *button=(UIButton *)cell viewWithTag:100;UILabel *lab1=(UILabel *)cell viewWithTag:200;UILabel *lab2=(UILabel *)cell viewWithTag:300; button setTitle:arrays objectAtIndex:indexPath.section objectAtIndex:indexPath.row forState:UIControlStateNormal; NS

38、String *hang=NSString stringWithFormat:%ld,indexPath.section;NSString *lie=NSString stringWithFormat:%ld,indexPath.row;NSString *shuzi=NSString allocinit;float xishu=dataAll objectForKey:hangobjectForKey:liefloatValue;a=xishu*c;if (a9999999999 | a0.0000000001) shuzi=N/A;else shuzi=NSString stringWit

39、hFormat:%.3f,a; if (shuzi isEqualToString:0.000) shuzi=N/A; shuzi=self changeFloat:shuzi;lab1.text=shuzi;lab2.text=arraysC objectAtIndex:indexPath.section objectAtIndex:indexPath.row;/ Configure the cell.cell.delegate=self;return cell;這段代碼是給匯率界面設(shè)置數(shù)據(jù)源和代理方法。有了這些,界面的基礎(chǔ)顯示功能就已經(jīng)完成了。時(shí)間獲取如圖4-3所示:圖4-3時(shí)間獲取其中的

40、核心代碼如下:-(NSString *)getTime NSDate * senddate=NSDate date; NSDateFormatter *dateformatter=NSDateFormatter alloc init; dateformatter setDateFormat:HH:mm:ss; NSString * locationString=dateformatter stringFromDate:senddate; NSCalendar * cal=NSCalendar currentCalendar; NSUInteger unitFlags=NSCalendarUni

41、tYear|NSCalendarUnitMonth|NSCalendarUnitDay; NSDateComponents * conponent= cal components:unitFlags fromDate:senddate; NSInteger year=conponent year; NSInteger month=conponent month; NSInteger day=conponent day; NSString * nsDateString= NSString stringWithFormat:%4ld-%2ld-%2ld,year,month,day; NSStri

42、ng *timeString=NSString stringWithFormat:% %,nsDateString,locationString; return timeString;在這段代碼中,首先獲取系統(tǒng)時(shí)間,然后按照年月日時(shí)分秒的格式來顯示時(shí)間。有了時(shí)間,用戶就可以知道界面顯示的兌換比例是在什么時(shí)間下的,從而判斷結(jié)果是否可以參考。這個(gè)模塊中最核心的地方要數(shù)如何換算了,實(shí)時(shí)請(qǐng)求需要網(wǎng)絡(luò),所以我們只要把起始貨幣,目標(biāo)貨幣和數(shù)量作為參數(shù),上傳到網(wǎng)絡(luò)服務(wù)器,具體代碼如下:運(yùn)用循環(huán),計(jì)算匯率結(jié)果:(void)jisuanhuilv NSString *httpUrl1 = /apistore/c

43、urrencyservice/currency; fromCountry=self.engName.text; for (int i=0; iarrays count; i+) for (int j=0; jarrays objectAtIndex:i count; j+) toCountry=arrays objectAtIndex:i objectAtIndex:j; NSString *httpArg1 = NSString stringWithFormat:fromCurrency=%&toCurrency=%&amount=%,fromCountry,toCountry,_numbe

44、r.text; self request:httpUrl1 withHttpArg:httpArg1 withSection:i withRow:j; 生成參數(shù),設(shè)置請(qǐng)求模式為GET:NSString *urlStr = NSString allocinitWithFormat: %?%, httpUrl,httpArg; NSURL *url = NSURL URLWithString: urlStr; NSLog(%,url); NSMutableURLRequest *request = NSMutableURLRequest allocinitWithURL: url cachePol

45、icy: NSURLRequestUseProtocolCachePolicy timeoutInterval: 60; request setHTTPMethod: GET; request addValue: 261c80c7941e815dd09ecf1207f49103 forHTTPHeaderField:apikey; NSURLConnection sendAsynchronousRequest:request queue:NSOperationQueue mainQueue completionHandler:(NSURLResponse *response, NSData *

46、data, NSError *connectionError)4.2.3普通換算設(shè)計(jì)在系統(tǒng)首頁中除了匯率,還有其他一些換算,這些換算相較于匯率并不需要實(shí)時(shí)獲取比例,換算公式是寫入在系統(tǒng)之中的。其中的難點(diǎn)在于如何在轉(zhuǎn)換單位的時(shí)候,把換算比例也一起轉(zhuǎn)化,下面為關(guān)鍵代碼:-(void)change:(UITableViewCell *)cell NSIndexPath *indexPath=self.tableView indexPathForCell:cell; NSString *hang=NSString stringWithFormat:%ld,indexPath.section; NSSt

47、ring *lie=NSString stringWithFormat:%ld,indexPath.row; UIButton *btn=(UIButton*)cell viewWithTag:100; _engName.text=btn.titleLabel.text; UILabel *lab=(UILabel *)cell viewWithTag:300; _chaName.text=lab.text; b=1/dataAll objectForKey:hangobjectForKey:liefloatValue; c=_number.text.floatValue*b; self.ta

48、bleView reloadData; 4.2.4旋轉(zhuǎn)動(dòng)畫在app當(dāng)中,動(dòng)畫的添加可以讓系統(tǒng)更加的炫麗。因?yàn)槲冶旧砑夹g(shù)能力有限,所以此次只添加一些簡(jiǎn)單的旋轉(zhuǎn)動(dòng)畫。如圖4-4:圖4-4旋轉(zhuǎn)中動(dòng)畫從圖中可以看到每一個(gè)cell從出現(xiàn)時(shí)開始旋轉(zhuǎn),到指定位置結(jié)束。加入了動(dòng)畫也是為了讓用戶可以得到一些新奇的體驗(yàn)。代碼如下:-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath /設(shè)置旋轉(zhuǎn)度數(shù) CATransform

49、3D rotation; / CATransform3D translate = CATransform3DMakeTranslation(0, 15, 0); rotation = CATransform3DMakeRotation( (90.0*M_PI)/180, 0.0, 0.7, 0.4); rotation.m34 = 1.0/ -600; cell.layer.shadowColor = UIColor blackColorCGColor; cell.layer.shadowOffset = CGSizeMake(10, 10); cell.alpha = 0; cell.lay

50、er.transform = rotation; / cell.layer.anchorPoint = CGPointMake(0, 0.5); /添加旋轉(zhuǎn)動(dòng)畫 UIView beginAnimations:rotation context:NULL; UIView setAnimationDuration:0.8; cell.layer.transform = CATransform3DIdentity; cell.alpha = 1; cell.layer.shadowOffset = CGSizeMake(0, 0); UIView commitAnimations;4.2.5分享功能在

51、系統(tǒng)首頁點(diǎn)擊左上角的分享按鈕??梢赃M(jìn)入到分享選擇界面。如圖4-5所示:圖4-5分享選擇頁面選擇界面提供給我們幾種分享選擇。新浪分享使用的是web端分享,微信使用的是跳轉(zhuǎn)微信app。兩種方式各有不同:首先是新浪分享,采用web端的分享比較簡(jiǎn)單,只需要手機(jī)可以有網(wǎng)絡(luò),并且在新浪開放平臺(tái)注冊(cè)賬號(hào)獲取appkey就可以進(jìn)行分享。如圖4-6:圖4-6新浪分享界面頁面因?yàn)槲⑿欧窒硎窃谖⑿臿pp內(nèi)進(jìn)行的,所以需要獲得微信的分享授權(quán)。同樣是需要到微信的開放平臺(tái)申請(qǐng)appkey。然后進(jìn)行分享。如圖4-7:圖4-7微信分享界面頁面分享功能可以產(chǎn)生一個(gè)社交傳播閉環(huán),更多的用戶看到分享的內(nèi)容,進(jìn)行分享評(píng)論的時(shí)候。這樣

52、可以產(chǎn)生非常多的回流點(diǎn)擊,回流點(diǎn)擊又會(huì)產(chǎn)生社交點(diǎn)擊。如此反復(fù)可以為app帶來巨大的用戶群體。提升app的潛力價(jià)值。下面是分享的核心代碼:ShareSDK registerApp:cdebd15d1c28 activePlatforms:(SSDKPlatformTypeSinaWeibo),(SSDKPlatformTypeWechat) onImport:(SSDKPlatformType platformType) switch (platformType) /分享方式 case SSDKPlatformTypeSinaWeibo:/新浪分享 ShareSDKConnector conne

53、ctWeChat:WeiboSDK class; break; case SSDKPlatformTypeWechat:/微信分享 ShareSDKConnector connectWeChat:WXApi class; break; default: break; onConfiguration:(SSDKPlatformType platformType, NSMutableDictionary *appInfo) /設(shè)置從開放平臺(tái)申請(qǐng)的appKey使分享功能被識(shí)別 switch (platformType) case SSDKPlatformTypeSinaWeibo: appInfo

54、SSDKSetupSinaWeiboByAppKey:3148487782 appSecret:91dfc2d5c76e0723760a7259f21f6361 redirectUri: authType:SSDKAuthTypeBoth; break; case SSDKPlatformTypeWechat: appInfo SSDKSetupWeChatByAppId:wx1c73ac99bfd5c566 appSecret:bb5b85fa44fe05a2a384b59b93450b68; break; default: break; ;4.2.6掃一掃功能二維碼是用某種特定的幾何圖形按

55、一定規(guī)律在平面分布的黑白相間的圖形記錄數(shù)據(jù)符號(hào)信息的。目前主流的一些app都帶有二維碼掃描功能。本系統(tǒng)的掃描功能在首頁右上角的設(shè)置里面可以找到。如圖4-8:圖4-8掃一掃界面掃描的二維碼得到的信息會(huì)通過UIAlert來反饋給用戶。如圖4-9:圖4-9掃描結(jié)果界面具體方法在于如何調(diào)用攝像機(jī),并解析二維碼。代碼如下:/獲取攝像設(shè)備AVCaptureDevice *device=AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo; /閃光燈 if (device hasFlash & device hasTorch) device

56、lockForConfiguration:nil; device setFlashMode:AVCaptureFlashModeAuto; device setTorchMode:AVCaptureTorchModeAuto; device unlockForConfiguration; /創(chuàng)建輸入流 AVCaptureDeviceInput *input=AVCaptureDeviceInput deviceInputWithDevice:device error:nil; /創(chuàng)建輸出流 AVCaptureMetadataOutput *output=AVCaptureMetadataOut

57、put allocinit; /設(shè)置代理 刷新線程 output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue(); output.rectOfInterest=self rectOfInterestByScanViewRect:_scanView.frame; /初始化鏈接對(duì)象 _session=AVCaptureSession allocinit; /采集率 _session.sessionPreset=AVCaptureSessionPresetHigh; if (input) _session addInpu

58、t:input; if (output) _session addOutput:output; /設(shè)置掃碼支持的編碼格式 NSMutableArray *array=NSMutableArray allocinitWithCapacity:0; if (output.availableMetadataObjectTypes containsObject:AVMetadataObjectTypeQRCode) array addObject:AVMetadataObjectTypeQRCode; if (output.availableMetadataObjectTypes containsOb

59、ject:AVMetadataObjectTypeEAN13Code) array addObject:AVMetadataObjectTypeEAN13Code; if (output.availableMetadataObjectTypes containsObject:AVMetadataObjectTypeEAN8Code) array addObject:AVMetadataObjectTypeEAN8Code; if (output.availableMetadataObjectTypes containsObject:AVMetadataObjectTypeCode128Code

60、) array addObject:AVMetadataObjectTypeCode128Code; output.metadataObjectTypes=array; 4.2.7 3dTouch功能3D Touch的觸控技術(shù),被蘋果稱為新一代多點(diǎn)觸控技術(shù)。就是屏幕可以感應(yīng)不同的感壓力度觸控。當(dāng)我們用力按壓屏幕的一個(gè)圖標(biāo),這時(shí)就會(huì)彈出一個(gè)菜單供我們做一線快捷操作。本系統(tǒng)把分享功能和掃描功能加入3D Touch的菜單中,如圖4-10所示。圖4-10 3D Touch菜單用戶在不打開app的情況下,使用app的一些常用操作。為用戶提供新鮮的體驗(yàn)。帶來了更方便快捷的感受。其中如何添加3D Touch

溫馨提示

  • 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)論