毕业论文-基于iOS移动端的常用计量单位换算app系统_第1页
毕业论文-基于iOS移动端的常用计量单位换算app系统_第2页
毕业论文-基于iOS移动端的常用计量单位换算app系统_第3页
毕业论文-基于iOS移动端的常用计量单位换算app系统_第4页
毕业论文-基于iOS移动端的常用计量单位换算app系统_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、盐城师范学院毕业设计毕业设计基于iOS移动端的常用计量单位换算app系统学生姓名 学 院 专 业 班 级 学 号 指导教师 2016年5月10日基于iOS移动端的常用计量单位换算app系统摘 要移动设备因其便携性,使用地点非常广泛,基本覆盖了一个人一天的活动范围。手机和电脑相比,在交通工具上、户外公共场所等地点应用更为方便,用户的使用率相对更高。这时手机app的出现更适合人们日常生活的使用。本设计在整个开发过程中采用的是iOS移动平台,采用Objectc在Xcode上编写app系统。实现了常用计量单位的换算功能,例如米换算成厘米,美元兑换人民币等等。结构上采用MVC架构,采用控制器完成模型和界

2、面之间的数据传递。当用户选择一种单位并输入数值,app会自动换算响应的数据并显示在其下方供用户参考。同时具备扫一扫功能,可以让app获取二维码的信息。用户还可以利用分享功能,把使用情况分享到微信或新浪上与自己的好友互动。本论文将对设计进行详细分析,阐述如何建立完整的常用计量单位换算的app系统。【关键词】单位换算;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系统目标 PAGEREF _Toc452678722 h 1 HYPERLINK l _Toc452678723 1.4关于iOS PAGEREF _Toc4

8、52678723 h 2 HYPERLINK l _Toc452678724 2系统技术 PAGEREF _Toc452678724 h 2 HYPERLINK l _Toc452678725 2.1 设计思路 PAGEREF _Toc452678725 h 2 HYPERLINK l _Toc452678726 2.2系统分析 PAGEREF _Toc452678726 h 2 HYPERLINK l _Toc452678727 2.2.1系统介绍 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系统功能模块划分 PAGEREF _Toc452678730 h 4 HYPERLINK l _Toc452678731 2.4关键技术 PAGEREF _Toc452678731 h 4 HYPERLINK l _Toc452678732 2.4.1系统技术简介 PAGEREF _Toc452678732 h 4 HYPERLINK l _Toc452678733 2.5开发工具

10、Xcode PAGEREF _Toc452678733 h 7 HYPERLINK l _Toc452678734 3 结构分析和设计 PAGEREF _Toc452678734 h 8 HYPERLINK l _Toc452678735 3.1换算功能结构分析 PAGEREF _Toc452678735 h 8 HYPERLINK l _Toc452678736 3.2页面结构设计 PAGEREF _Toc452678736 h 8 HYPERLINK l _Toc452678737 3.3逻辑结构设计 PAGEREF _Toc452678737 h 8 HYPERLINK l _Toc45

11、2678738 3.4 文件info.plist PAGEREF _Toc452678738 h 10 HYPERLINK l _Toc452678739 4系统实现 PAGEREF _Toc452678739 h 10 HYPERLINK l _Toc452678740 4.1基础文件 PAGEREF _Toc452678740 h 10 HYPERLINK l _Toc452678741 4.2系统功能设计 PAGEREF _Toc452678741 h 11 HYPERLINK l _Toc452678742 4.2.1系统主界面 PAGEREF _Toc452678742 h 11 H

12、YPERLINK l _Toc452678743 4.2.2汇率换算设计 PAGEREF _Toc452678743 h 12 HYPERLINK l _Toc452678744 4.2.3普通换算设计 PAGEREF _Toc452678744 h 16 HYPERLINK l _Toc452678745 4.2.4旋转动画 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系统测试 PAGEREF _Toc452678749 h 23 HYPERLINK l _Toc452678750 5.1 数据换算测试 PAGEREF _Toc452678750 h 24 HYPERLINK l _Toc452678751 5.2 界面切换测试 PAGEREF _Toc452678751 h 24 HYPERLINK l _Toc452678752

14、 5.3 分享测试 PAGEREF _Toc452678752 h 25 HYPERLINK l _Toc452678753 5.4 扫描测试 PAGEREF _Toc452678753 h 25 HYPERLINK l _Toc452678754 6结论 PAGEREF _Toc452678754 h 25 HYPERLINK l _Toc452678755 参考文献 PAGEREF _Toc452678755 h 27 HYPERLINK l _Toc452678756 致 谢 PAGEREF _Toc452678756 h 28第28页 ,共28页1课题概述1.1研究的背景及意义移动互联

15、网时代,移动设备已经普及,适合移动学习的资源在网络上也备受关注。这篇文章是在非正式学习与微型学习理论的基础上,根据移动开发人员的特征从而提出的移动学习资源设计的原则和流程1。在这些理论的基础上、充分利用iOS的个性化来设计和开发了基于iOS的移动功能软件,并且介绍了个性化手势技术的实现。生活中我们有时需要重量或长度等的换算,远离学校后可能会使我们已经忘记数据之间的换算公式。利用本app可以使我们轻松换算数据于各个相关单位之间。大大方便了我们的生活。1.2研究思路课题研究的思路是只要输入用户想要转换的数值,相关单位的换算结果就会在同一界面即时显示,直观方便。基本单位按公制、英制分组,货币则按大洲

16、分组,方便查找。课题研究的方法是利用OC语言,使用Xcode,实现数据的换算和界面的展示。把换算都写进后台,前台页面显示用户关心的数据换算过后的结果。课题研究的要求是不用再记那些枯燥的公式了,为用户提供良好的使用感觉。更加贴近人们的生活,推动人们的生活水平更加的提高。1.3系统目标我理想中的常用计量单位换算app最主要的特性就是要方便快捷。用户即使不会公式也能找到自己想要的结果。本app要提供全面的日常生活中可能用到的计量单位,帮助用户快捷生活。界面美观、功能实用、操作简单、使用灵活调用汇率api时响应快速用户对重量、长度、速度等计量单位换算时显示世界通用的标准单位分享应用到朋友圈中,与朋友互

17、动扫一扫,获取信息或者跳转网页识别手势左划,进行返回操作。动画切换单位换算数据刷新时有旋转动画1.4关于iOSiOS是由苹果公司开发的移动操作系统。iOS最早于2007年1月9日面世。最初是设计搭载在苹果手机上运行。后来陆续被用于苹果的其他产品上。iOS是属于类Unix的商业操作系统。软件支持的语言有C、C+、Objective-C、Objective-C和swift。目前最新的版本为iOS9.3。2系统技术2.1 设计思路常用计量单位换算app是一个简单的应用系统,主要提供全面的换算来吸引用户。用户只使用一种app就可以拥有汇率、长度、面积、体积等换算功能。该设计包括了以下单位的换算功能:汇

18、率换算功能:各个国家和地区钱币的换算长度换算功能:常用长度之间的换算面积换算功能:常用面积之间的换算体积换算功能:常用体积之间的换算温度换算功能:常用温度之间的换算速度换算功能:常用速度之间的换算重量换算功能:常用重量之间的换算压强换算功能:常用压强之间的换算功率换算功能:常用功率之间的换算能量换算功能:常用能量之间的换算力换算功能:常用力之间的换算电阻换算功能:常用电阻之间的换算2.2系统分析2.2.1系统介绍该系统主要是面向日常生活中遇到的琐事,比如外汇,一般用户只知道大概汇率。但是汇率是实时改变的。利用本系统就可以轻松获取汇率的详细信息。再比如进口食品,外国用的计量单位和国内略有不同,比

19、如一盎司是多少kg呢。类似的这些情况都可以轻松解决。2.2.2功能需求 该系统基本覆盖了日常生活中需要用到的单位换算,并且把扫一扫功能加入app,给用户更好的使用体验。该系统是在MVC模式的基础开发而成。用户只能看到View界面展示的换算结果 换算功能:基本换算功能:类似长度,面积等单位。相互换算成比例。温度换算功能:温度之间的换算各有差别,不能统一的计算,需要分别处理。汇率换算功能:钱币之间的换算是实时发生变化的,此功能每次使用前都需要刷新当前数据。额外功能: 分享功能:把自己的使用情况分享到社交平台。扫描功能:扫描二维码获取其中信息。3d Touch功能:重压应用图标,弹出快捷操作菜单。以

20、下是系统的流程图和用例图:图2-1 功能流程图图2-2 系统用例图2.2.3可行性分析本系统主要考虑技术可行性。本系统在行业内已经具备类似的软件,所以本系统时是可以完成的。同时,技术难点就是几个功能模块中数据的运算。实时变化的需要使用网络的api接口。项目的规模不是很大,主要用户全体为日常生活的普通百姓。对于信息化社会来说,人们有必要融入到快节奏的生活当中。方便快捷的系统才能更好的适应需求。提高效率,提升竞争力才是一个好的应用应该带来的效果。常用计量单位换算相较于网络查找的优势在于本系统全面的包括各种换算,只在一个app中就可以得到多种换算省去了上网查找的时间。而且界面简单,上手迅速。所以本系

21、统时完全可行的。2.3系统功能模块划分常用计量单位换算系统从功能上分为:换算功能,分享功能,扫描功能。里面还有一些具体的功能。2.4关键技术2.4.1系统技术简介MVC设计模式M是指模型(model),V是指视图(view),C是指控制器(controller),使用MVC模式的目的是将模型和视图页面进行代码分离2,从而使同一个系统可以采用不同的表现形式。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。如图2-3:图2-3 MVC设计框架JSON JSON是一种轻量级的数据交换格式3。它基于ECMAScript的一个子集。 JSON采用的是完全独立于代码语言的文本格式,但是也使用

22、了近似C语言家族的习惯(包括C、C+、C#、Perl、Python、Java、JavaScript等)。JSON是目前理想的数据交换语言。 方便读写,也方便开发工具的解析和生成(一般用于跨平台的数据传输)。StoryboardStoryboard可以描述各种场景之间的转换,这种转换被称作”segue”, 通过简单的ctrl-dragging就能搞定,减少代码量。Storyboard支持table view的prototype cell,这意味着可以在storyboard中编辑cell,减少代码量。Storyboard非常适合做UI设计,界面样式可以直观的显示出来,控件之间的距离、界面的色彩搭配

23、都可以很好的得到控制。图2-4展示了Storyboard如何管理各个界面。图2-4 Storyboard中编辑界面UITableViewUITableView有两个Delegate分别为:dataSource和delegate。dataSource是UITableViewDataSource类型,主要为UITableView提供显示用的数据(UITableViewCell),指定UITableViewCell支持的编辑操作类型(insert,delete和reordering),并且根据用户的操作进行对应的数据更新操作,如果数据没有进行正确的更新操作,可能会导致显示异常,甚至程序崩溃。dele

24、gate是UITableViewDelegate类型,主要提供一些可选的方法,用来控制tableView的选择、指定section的头和尾的显示以及协助完成cell的删除和排序等功能。提到UITableView,就必须的说一说NSIndexPath。UITableView声明了一个NSIndexPath的类别,主要用来标识当前cell的在tableView中的位置,该类别有section和row两个属性,前者标识当前cell处于第几个section中,后者代表在该section中的第几行。可以简单的理解为行和列。UITableView只能有一列数据(cell),而且只支持纵向的滑动,当创建的t

25、ablView第一次显示的时候,我们需要调用其reloadData方法,强制刷新一次,从而使tableView的数据更新到最新状态。转场动画在ios中转场动画占了很大的动画比例。比如模态推送的dismiss和present、导航制控器(Nav)的push和pop等。导航控制器如图2-5:图2-5 导航控制器转场动画都要有相应的过渡对象。在方法中,写对应的动画逻辑。利用控制器获取和设置button和frame来设置动画的开始结束的位置。KVO和KVCKVC的全称是Key-value coding.是一个非正式的Protocol。它提供一种方式让我们来间接的访问对象的属性。KVC是使用字符串来识别

26、对象的属性,而不是通过调用访问方法或者直接访问实例变量。从本质上来说,KVC定义了模式和方法签名,实现应用程序的访问方法。KVO的全称是Key-value observing。它是通过允许将对象更改通知其他对象的特定属性。常用于模型和控制器在app中的通信4。KVO是基于KVC实现的关键技术之一。2.5开发工具XcodeXcode是苹果公司在Mac OS X下的集成开发环境(IDE)引擎5。它负责处理从工程创建到工程的最终部署这之间的大多数工作。我们可以通过这个Xcode来完成如下工作:1)创建和管理项目,包括对目标的需求、依赖性和编写风格的设定。2)在具有语法染色、自动缩进等功能的编辑器上编

27、写源代码。3)在工程的不同文件中进行查询和检索,包括头文件和文档。4)连编工程5)在图形化的源代码级调试器(Storyboard)上调试工程Xcode 支持编译的语言C、C+6、Objective-C、Objective-C+、和Java编写的源代码组成的工程,还可以生成Mac OS X支持的所有类型的执行代码,包括命令行工具、框架、内核扩展、插件、程序包、和应用程序。Xcode允许对连编和调试工具、可执行文件的打包方式(包括信息属性列表和本地化程序包)、连编过程(包括拷贝文件、脚本文件处理、和其它连编阶段)、以及用户界面(包括分立和多视图的代码编辑器)进行几乎无限的自定义;还支持几个源代码管

28、理系统(其中有CVS和Perforce),可以将文件追加到代码库(其中有SVN或者Github)、提交修改、获取更新版本、以及进行版本的比较。3 结构分析和设计 所谓分析,是指目标系统必须满足的所有功能逻辑和限制,通常包括功能要求、性能要求、可靠性要求、安全保密7要求等。3.1换算功能结构分析以下是换算功能的结构:标准信息包括的数据项有英制、公制、日制、市制、航海、天文等单位信息包括的数据项为每个标准下对应的单位状态信息包括的数据项有状态标识符,状态图片等数据信息包括的数据项为每个单位所对应的数字3.2页面结构设计根据需求分析,我设计了满足用户需求的各类实体,为下面逻辑结构的设计奠基。页面采用

29、上下结构,页面上部分由用户输入换算数据,下部分则是系统来显示换算的结果。3.3逻辑结构设计根据对需求的分析,为了方便客户操作,本系统的数据结构具体设计如下: 表3-1数组字段介绍字段名数据类型注释arrAllNSArray标准数组arrmiNSArray英制数组arrkmNSArray公制数组arrriNSArray日制数组arrliNSArray市制数组arrnmiNSArray航海数组arrpcNSArray天文数组表3-2界面信息介绍字段名数据类型注释dataAllNSMutableDictionary数据字典numberUITextField输入数据engNameUILabel英文单位

30、chaNameUILabel中文单位tableViewUITableView数据界面MyViewUIView基础界面3.4 文件info.plist图3-1 info配置表 每个iOS的application都是用Info.plist文件(图3-1)来存储上图中的信息,从命名上也可以猜到Info.plist就是“属性列表”。iOS用Info.plist来决定bundle所显示的icon,当前app可以解析的文档类型,等等应用的基础信息。Info.plist本身是一种结构化的文本文件,它包含了一些重要的配置信息。Info.plist文件在大部分的情况下是以UTF-8进行编码,它的配置内容其实是以

31、XML格式来生成的。XML的根节点是一个词典(dictionary),包含描述bundle所有方面的keys和values。系统读取该文件,并获取app的配置信息。4系统实现4.1基础文件AppDelegate是app的起点,系统完成启动任务后,就会把处理权交给用户.其中代码如下:利用StoryBoard创建起始界面:UIStoryboard *storyboard=UIStoryboard storyboardWithName:Main bundle:NSBundle mainBundle;rootController=storyboard instantiateViewController

32、WithIdentifier:RootViewController;self.window.rootViewController=rootController; UIApplication sharedApplicationsetStatusBarStyle:UIStatusBarStyleLightContent animated:NO;运行开机动画:CoreLaunchLite animWithWindow:self.window image:nil;4.2系统功能设计4.2.1系统主界面系统首页的最顶端像其他app一样显示手机时间和电量, 稍下方是界面名称。名称左侧是分享功能,右侧是设置

33、功能。状态栏下方是功能栏。分成3*4的“九宫格”模式的12种单位换算。用户可以点击选择跳转相应界面。图4-1系统主界面其中如果是第一次登录会有使用提示界面。如何判断是否为第一次使用的代码如下:/判断是不是第一次启动应用if(!NSUserDefaults standardUserDefaults boolForKey:firstLaunch) NSUserDefaults standardUserDefaults setBool:YES forKey:firstLaunch; NSLog(第一次启动); _markView = GuideView allocinitWithFrame:self

34、.view.bounds; _markView.model = GuideViewCleanModeRoundRect; _markView.markText = 欢迎使用.n第一次使用将进入引导; self.view addSubview:_markView; else NSLog(不是第一次启动); 反映用户的登录状态主要是用NSUserDefaults来存储的。如果是第一次登录,NSUserDefaults里面不会有数据。如果有数据就意味着不是第一次登录了。4.2.2汇率换算设计在系统功能选择界面点击汇率按钮,app会push到汇率的view。在新的界面中来完成用户的换算任务。左上角设有

35、返回按钮。右上角有刷新按钮。因为汇率的换算是根据银行发布的比例来计算,所以需要网络8来获取当前时间的换算比例。汇率的主界面如图4-2所示:图4-2 汇率主界面其中汇率主界面的核心代码如下:为HeaderView设置高度:-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section return 50;为数据cell设置高度:-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPa

36、th *)indexPath return 50;为数据cell赋值,这里使用了遍历的过程。为每一个cell添加参数shuzi用来显示换算的数据。其中button显示英文单位,lab2显示中文单位。为了保证数值不会过大或者过小,使用if条件判断,如果超出限制则显示N/A。- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath MyCell *cell = tableView dequeueReusableCellWithIdentifier:le

37、ngthCell forIndexPath:indexPath;/cell界面设计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;这段代码是给汇率界面设置数据源和代理方法。有了这些,界面的基础显示功能就已经完成了。时间获取如图4-3所示:图4-3时间获取其中的

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;在这段代码中,首先获取系统时间,然后按照年月日时分秒的格式来显示时间。有了时间,用户就可以知道界面显示的兑换比例是在什么时间下的,从而判断结果是否可以参考。这个模块中最核心的地方要数如何换算了,实时请求需要网络,所以我们只要把起始货币,目标货币和数量作为参数,上传到网络服务器,具体代码如下:运用循环,计算汇率结果:(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; 生成参数,设置请求模式为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普通换算设计在系统首页中除了汇率,还有其他一些换算,这些换算相较于汇率并不需要实时获取比例,换算公式是写入在系统之中的。其中的难点在于如何在转换单位的时候,把换算比例也一起转化,下面为关键代码:-(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旋转动画在app当中,动画的添加可以让系统更加的炫丽。因为我本身技术能力有限,所以此次只添加一些简单的旋转动画。如图4-4:图4-4旋转中动画从图中可以看到每一个cell从出现时开始旋转,到指定位置结束。加入了动画也是为了让用户可以得到一些新奇的体验。代码如下:-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath /设置旋转度数 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); /添加旋转动画 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、系统首页点击左上角的分享按钮。可以进入到分享选择界面。如图4-5所示:图4-5分享选择页面选择界面提供给我们几种分享选择。新浪分享使用的是web端分享,微信使用的是跳转微信app。两种方式各有不同:首先是新浪分享,采用web端的分享比较简单,只需要手机可以有网络,并且在新浪开放平台注册账号获取appkey就可以进行分享。如图4-6:图4-6新浪分享界面页面因为微信分享是在微信app内进行的,所以需要获得微信的分享授权。同样是需要到微信的开放平台申请appkey。然后进行分享。如图4-7:图4-7微信分享界面页面分享功能可以产生一个社交传播闭环,更多的用户看到分享的内容,进行分享评论的时候。这样

52、可以产生非常多的回流点击,回流点击又会产生社交点击。如此反复可以为app带来巨大的用户群体。提升app的潜力价值。下面是分享的核心代码: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) /设置从开放平台申请的appKey使分享功能被识别 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、一定规律在平面分布的黑白相间的图形记录数据符号信息的。目前主流的一些app都带有二维码扫描功能。本系统的扫描功能在首页右上角的设置里面可以找到。如图4-8:图4-8扫一扫界面扫描的二维码得到的信息会通过UIAlert来反馈给用户。如图4-9:图4-9扫描结果界面具体方法在于如何调用摄像机,并解析二维码。代码如下:/获取摄像设备AVCaptureDevice *device=AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo; /闪光灯 if (device hasFlash & device hasTorch) device

56、lockForConfiguration:nil; device setFlashMode:AVCaptureFlashModeAuto; device setTorchMode:AVCaptureTorchModeAuto; device unlockForConfiguration; /创建输入流 AVCaptureDeviceInput *input=AVCaptureDeviceInput deviceInputWithDevice:device error:nil; /创建输出流 AVCaptureMetadataOutput *output=AVCaptureMetadataOut

57、put allocinit; /设置代理 刷新线程 output setMetadataObjectsDelegate:self queue:dispatch_get_main_queue(); output.rectOfInterest=self rectOfInterestByScanViewRect:_scanView.frame; /初始化链接对象 _session=AVCaptureSession allocinit; /采集率 _session.sessionPreset=AVCaptureSessionPresetHigh; if (input) _session addInpu

58、t:input; if (output) _session addOutput:output; /设置扫码支持的编码格式 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的触控技术,被苹果称为新一代多点触控技术。就是屏幕可以感应不同的感压力度触控。当我们用力按压屏幕的一个图标,这时就会弹出一个菜单供我们做一线快捷操作。本系统把分享功能和扫描功能加入3D Touch的菜单中,如图4-10所示。图4-10 3D Touch菜单用户在不打开app的情况下,使用app的一些常用操作。为用户提供新鲜的体验。带来了更方便快捷的感受。其中如何添加3D Touch

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论