




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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è)開(kāi)發(fā)過(guò)程中采用的是iOS移動(dòng)平臺(tái),采用Objectc在Xcode上編寫(xiě)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開(kāi)發(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頁(yè)面結(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)畫(huà) 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頁(yè) ,共28頁(yè)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)開(kāi)發(fā)人員的特征從而提出的移動(dòng)學(xué)習(xí)資源設(shè)計(jì)的原則和流程1。在這些理論的基礎(chǔ)上、充分利用iOS的個(gè)性化來(lái)設(shè)計(jì)和開(kāi)發(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í)顯示,直觀方便?;締挝话垂啤⒂⒅品纸M,貨幣則按大洲
16、分組,方便查找。課題研究的方法是利用OC語(yǔ)言,使用Xcode,實(shí)現(xiàn)數(shù)據(jù)的換算和界面的展示。把換算都寫(xiě)進(jìn)后臺(tái),前臺(tái)頁(yè)面顯示用戶關(guān)心的數(shù)據(jù)換算過(guò)后的結(jié)果。課題研究的要求是不用再記那些枯燥的公式了,為用戶提供良好的使用感覺(jué)。更加貼近人們的生活,推動(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)頁(yè)識(shí)別手勢(shì)左劃,進(jìn)行返回操作。動(dòng)畫(huà)切換單位換算數(shù)據(jù)刷新時(shí)有旋轉(zhuǎn)動(dòng)畫(huà)1.4關(guān)于iOSiOS是由蘋果公司開(kāi)發(fā)的移動(dòng)操作系統(tǒng)。iOS最早于2007年1月9日面世。最初是設(shè)計(jì)搭載在蘋果手機(jī)上運(yùn)行。后來(lái)陸續(xù)被用于蘋果的其他產(chǎn)品上。iOS是屬于類Unix的商業(yè)操作系統(tǒng)。軟件支持的語(yǔ)言有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),主要提供全面的換算來(lái)吸引用戶。用戶只使用一種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ǔ)開(kāi)發(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ì)來(lái)說(shuō),人們有必要融入到快節(jié)奏的生活當(dāng)中。方便快捷的系統(tǒng)才能更好的適應(yīng)需求。提高效率,提升競(jìng)爭(zhēng)力才是一個(gè)好的應(yīng)用應(yīng)該帶來(lái)的效果。常用計(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模式的目的是將模型和視圖頁(yè)面進(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ú)立于代碼語(yǔ)言的文本格式,但是也使用
22、了近似C語(yǔ)言家族的習(xí)慣(包括C、C+、C#、Perl、Python、Java、JavaScript等)。JSON是目前理想的數(shù)據(jù)交換語(yǔ)言。 方便讀寫(xiě),也方便開(kāi)發(fā)工具的解析和生成(一般用于跨平臺(tái)的數(shù)據(jù)傳輸)。StoryboardStoryboard可以描述各種場(chǎng)景之間的轉(zhuǎn)換,這種轉(zhuǎn)換被稱作”segue”, 通過(guò)簡(jiǎn)單的ctrl-dragging就能搞定,減少代碼量。Storyboard支持table view的prototype cell,這意味著可以在storyboard中編輯cell,減少代碼量。Storyboard非常適合做UI設(shè)計(jì),界面樣式可以直觀的顯示出來(lái),控件之間的距離、界面的色彩搭配
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ù)沒(méi)有進(jìn)行正確的更新操作,可能會(huì)導(dǎo)致顯示異常,甚至程序崩潰。dele
24、gate是UITableViewDelegate類型,主要提供一些可選的方法,用來(lái)控制tableView的選擇、指定section的頭和尾的顯示以及協(xié)助完成cell的刪除和排序等功能。提到UITableView,就必須的說(shuō)一說(shuō)NSIndexPath。UITableView聲明了一個(gè)NSIndexPath的類別,主要用來(lái)標(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īng)顟B(tài)。轉(zhuǎn)場(chǎng)動(dòng)畫(huà)在ios中轉(zhuǎn)場(chǎng)動(dòng)畫(huà)占了很大的動(dòng)畫(huà)比例。比如模態(tài)推送的dismiss和present、導(dǎo)航制控器(Nav)的push和pop等。導(dǎo)航控制器如圖2-5:圖2-5 導(dǎo)航控制器轉(zhuǎn)場(chǎng)動(dòng)畫(huà)都要有相應(yīng)的過(guò)渡對(duì)象。在方法中,寫(xiě)對(duì)應(yīng)的動(dòng)畫(huà)邏輯。利用控制器獲取和設(shè)置button和frame來(lái)設(shè)置動(dòng)畫(huà)的開(kāi)始結(jié)束的位置。KVO和KVCKVC的全稱是Key-value coding.是一個(gè)非正式的Protocol。它提供一種方式讓我們來(lái)間接的訪問(wèn)對(duì)象的屬性。KVC是使用字符串來(lái)識(shí)別
26、對(duì)象的屬性,而不是通過(guò)調(diào)用訪問(wèn)方法或者直接訪問(wèn)實(shí)例變量。從本質(zhì)上來(lái)說(shuō),KVC定義了模式和方法簽名,實(shí)現(xiàn)應(yīng)用程序的訪問(wèn)方法。KVO的全稱是Key-value observing。它是通過(guò)允許將對(duì)象更改通知其他對(duì)象的特定屬性。常用于模型和控制器在app中的通信4。KVO是基于KVC實(shí)現(xiàn)的關(guān)鍵技術(shù)之一。2.5開(kāi)發(fā)工具XcodeXcode是蘋果公司在Mac OS X下的集成開(kāi)發(fā)環(huán)境(IDE)引擎5。它負(fù)責(zé)處理從工程創(chuàng)建到工程的最終部署這之間的大多數(shù)工作。我們可以通過(guò)這個(gè)Xcode來(lái)完成如下工作:1)創(chuàng)建和管理項(xiàng)目,包括對(duì)目標(biāo)的需求、依賴性和編寫(xiě)風(fēng)格的設(shè)定。2)在具有語(yǔ)法染色、自動(dòng)縮進(jìn)等功能的編輯器上編
27、寫(xiě)源代碼。3)在工程的不同文件中進(jìn)行查詢和檢索,包括頭文件和文檔。4)連編工程5)在圖形化的源代碼級(jí)調(diào)試器(Storyboard)上調(diào)試工程Xcode 支持編譯的語(yǔ)言C、C+6、Objective-C、Objective-C+、和Java編寫(xiě)的源代碼組成的工程,還可以生成Mac OS X支持的所有類型的執(zhí)行代碼,包括命令行工具、框架、內(nèi)核擴(kuò)展、插件、程序包、和應(yīng)用程序。Xcode允許對(duì)連編和調(diào)試工具、可執(zhí)行文件的打包方式(包括信息屬性列表和本地化程序包)、連編過(guò)程(包括拷貝文件、腳本文件處理、和其它連編階段)、以及用戶界面(包括分立和多視圖的代碼編輯器)進(jìn)行幾乎無(wú)限的自定義;還支持幾個(gè)源代碼管
28、理系統(tǒng)(其中有CVS和Perforce),可以將文件追加到代碼庫(kù)(其中有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頁(yè)面結(jié)構(gòu)設(shè)計(jì)根據(jù)需求分析,我設(shè)計(jì)了滿足用戶需求的各類實(shí)體,為下面邏輯結(jié)構(gòu)的設(shè)計(jì)奠基。頁(yè)面采用
29、上下結(jié)構(gòu),頁(yè)面上部分由用戶輸入換算數(shù)據(jù),下部分則是系統(tǒng)來(lái)顯示換算的結(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)來(lái)存儲(chǔ)上圖中的信息,從命名上也可以猜到Info.plist就是“屬性列表”。iOS用Info.plist來(lái)決定bundle所顯示的icon,當(dāng)前app可以解析的文檔類型,等等應(yīng)用的基礎(chǔ)信息。Info.plist本身是一種結(jié)構(gòu)化的文本文件,它包含了一些重要的配置信息。Info.plist文件在大部分的情況下是以UTF-8進(jìn)行編碼,它的配置內(nèi)容其實(shí)是以
31、XML格式來(lái)生成的。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)行開(kāi)機(jī)動(dòng)畫(huà):CoreLaunchLite animWithWindow:self.window image:nil;4.2系統(tǒng)功能設(shè)計(jì)4.2.1系統(tǒng)主界面系統(tǒng)首頁(yè)的最頂端像其他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來(lái)存儲(chǔ)的。如果是第一次登錄,NSUserDefaults里面不會(huì)有數(shù)據(jù)。如果有數(shù)據(jù)就意味著不是第一次登錄了。4.2.2匯率換算設(shè)計(jì)在系統(tǒng)功能選擇界面點(diǎn)擊匯率按鈕,app會(huì)push到匯率的view。在新的界面中來(lái)完成用戶的換算任務(wù)。左上角設(shè)有
35、返回按鈕。右上角有刷新按鈕。因?yàn)閰R率的換算是根據(jù)銀行發(fā)布的比例來(lái)計(jì)算,所以需要網(wǎng)絡(luò)8來(lái)獲取當(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賦值,這里使用了遍歷的過(guò)程。為每一個(gè)cell添加參數(shù)shuzi用來(lái)顯示換算的數(shù)據(jù)。其中button顯示英文單位,lab2顯示中文單位。為了保證數(shù)值不會(huì)過(guò)大或者過(guò)小,使用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í)分秒的格式來(lái)顯示時(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)首頁(yè)中除了匯率,還有其他一些換算,這些換算相較于匯率并不需要實(shí)時(shí)獲取比例,換算公式是寫(xiě)入在系統(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)畫(huà)在app當(dāng)中,動(dòng)畫(huà)的添加可以讓系統(tǒng)更加的炫麗。因?yàn)槲冶旧砑夹g(shù)能力有限,所以此次只添加一些簡(jiǎn)單的旋轉(zhuǎn)動(dòng)畫(huà)。如圖4-4:圖4-4旋轉(zhuǎn)中動(dòng)畫(huà)從圖中可以看到每一個(gè)cell從出現(xiàn)時(shí)開(kāi)始旋轉(zhuǎn),到指定位置結(jié)束。加入了動(dòng)畫(huà)也是為了讓用戶可以得到一些新奇的體驗(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)畫(huà) 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)首頁(yè)點(diǎn)擊左上角的分享按鈕??梢赃M(jìn)入到分享選擇界面。如圖4-5所示:圖4-5分享選擇頁(yè)面選擇界面提供給我們幾種分享選擇。新浪分享使用的是web端分享,微信使用的是跳轉(zhuǎn)微信app。兩種方式各有不同:首先是新浪分享,采用web端的分享比較簡(jiǎn)單,只需要手機(jī)可以有網(wǎng)絡(luò),并且在新浪開(kāi)放平臺(tái)注冊(cè)賬號(hào)獲取appkey就可以進(jìn)行分享。如圖4-6:圖4-6新浪分享界面頁(yè)面因?yàn)槲⑿欧窒硎窃谖⑿臿pp內(nèi)進(jìn)行的,所以需要獲得微信的分享授權(quán)。同樣是需要到微信的開(kāi)放平臺(tái)申請(qǐng)appkey。然后進(jìn)行分享。如圖4-7:圖4-7微信分享界面頁(yè)面分享功能可以產(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帶來(lái)巨大的用戶群體。提升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è)置從開(kāi)放平臺(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)的掃描功能在首頁(yè)右上角的設(shè)置里面可以找到。如圖4-8:圖4-8掃一掃界面掃描的二維碼得到的信息會(huì)通過(guò)UIAlert來(lái)反饋給用戶。如圖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菜單用戶在不打開(kāi)app的情況下,使用app的一些常用操作。為用戶提供新鮮的體驗(yàn)。帶來(lái)了更方便快捷的感受。其中如何添加3D Touch
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)生安全自律協(xié)議3篇
- 擦洗劑的成分與清潔效果對(duì)比研究考核試卷
- 審計(jì)證據(jù)收集與評(píng)估考核試卷
- 火工品生產(chǎn)過(guò)程中的安全生產(chǎn)標(biāo)準(zhǔn)化實(shí)施考核試卷
- 纖維素纖維的生態(tài)友好型加工技術(shù)與設(shè)備考核試卷
- 環(huán)境污染治理區(qū)域合作考核試卷
- 2025標(biāo)準(zhǔn)租房合同范本下載
- 2025巨型建設(shè)項(xiàng)目合同范本
- 2025辦公租賃合同(財(cái)產(chǎn)租賃合同)
- 房屋委托居間服務(wù)合同書(shū)范例
- 個(gè)人代持協(xié)議書(shū)
- 機(jī)組啟動(dòng)試運(yùn)行調(diào)試大綱
- 醫(yī)務(wù)人員技術(shù)檔案
- JBT 7387-2014 工業(yè)過(guò)程控制系統(tǒng)用電動(dòng)控制閥
- 18文言文二則《囊螢夜讀》公開(kāi)課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì)
- 期中測(cè)試卷(1-5單元)(試題)-2023-2024學(xué)年二年級(jí)下冊(cè)數(shù)學(xué)人教版
- 2022高考數(shù)學(xué)全國(guó)1卷(原卷版)
- 陜西方言研究報(bào)告
- 土地永久性租賃合同
- 武漢商用車展電驅(qū)橋匯總
- 建筑工程總承包與分包界面劃分大全(4種)
評(píng)論
0/150
提交評(píng)論