基于ios影视信息手机客户端的设计与实现_第1页
基于ios影视信息手机客户端的设计与实现_第2页
基于ios影视信息手机客户端的设计与实现_第3页
基于ios影视信息手机客户端的设计与实现_第4页
基于ios影视信息手机客户端的设计与实现_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

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

文档简介

学科分类号0810本科学生毕业论文(设计)题目(中文)基于IOS影视信息手机客户端的设计与实现(英文)THEDESIGNINGANDIMPLEMENTATIONOFPHONEMOVIEIMFORMATIONCLIENTMODULEBASEDONIOS姓名谭小清学号200908002213院(系)计算机与通信工程系专业、年级通信工程专业2009级指导老师李文(讲师)2013年4月18日基于IOS影视信息手机客户端的设计与实现摘要随着信息网络时代的快速发展,手机使用方式的多样化,智能手机以及移动互联网应用的普及,不断地改变着人们的生活方式。一款好的应用软件成为手机必备,本设计主要基于IOS平台实现了IPHONE客户端查看影视讯息的功能,通过此款应用可以查看当前最新影片的简介、评论、评分等等。本设计采用XCODE开发工具,它具有可视化的编程界面、详细的提示、以及完善的帮助文档,软件开发人员使用起来非常方便。本设计首先概要性地介绍了本文使用的关键技术、MVC模式等;然后给出模块端总体分析与设计,包括系统的需求分析、系统设计要求、系统总体功能设计;其次用图表加文字的方式对设计工作中的重点部分做出了详细地阐述;最后具体描述了模块的实现过程,并对关键技术的实现,进行了代码解析。【关键词】影视信息;IOS;IPHONE;JOSN;服务器THEDESIGNINGANDIMPLEMENTATIONOFPHONEMOVIEIMFORMATIONBASEDONIOSABSTRACTWITHTHERAPIDDEVELOPMENTOFINFORMATIONNETWORKERA,THEDIVERSIFICATIONOFMOBILEPHONEUSE,INTELLIGENTMOBILEPHONEANDTHEPOPULARITYOFMOBILEINTERNETAPPLICATIONS,CONSTANTLYCHANGINGPEOPLESWAYOFLIFEAGOODMOBILEPHONEAPPLICATIONSOFTWAREBECOMENECESSARY,THISDESIGNISMAINLYBASEDONTHEIOSPLATFORMOFTHEIPHONECLIENTTOVIEWVIDEOMESSAGEFUNCTION,THROUGHTHISAPPLICATIONCANVIEWTHELATESTMOVIEINTRODUCTION,REVIEW,SCORINGANDSOONTHISDESIGNUSESTHEXCODEDEVELOPMENTTOOLS,ITHASTHEVISUALPROGRAMMINGINTERFACE,DETAILEDTIPSANDPERFECTHELPDOCUMENTATION,ITISVERYCONVENIENTTOUSEFORSOFTWAREDEVELOPERSTHISPAPERFIRSTLYBRIEFLYINTRODUCESTHEKEYTECHNOLOGIESANDTHEMVCMODE,SECONDLYGIVESTHETOTALANALYSISANDDESIGNOFTERMINALMODULE,INCLUDINGSYSTEMREQUIREMENTSANALYSIS,SYSTEMDESIGNANDSYSTEMFUNCTIONDESIGNNEXTGIVESTHEFIGURESANDTEXTOFKEYPARTSDESIGNATLASTTHISPAPERPETENDSTHECONCRETEDESCRIPTIONOFTHEMODULEREALIZATIONPROCESS,ATTHESAMETIMETHEKEYTECHNIQUECODESAREPROVIDEDANDANALIZED【KEYWORDS】MOVIEIMFORMATION;IOS;IPHONE;JSON;SEVER目录1绪论111本课题背景及意义112国内外研究现状113本课题的研究内容214本章小结32IOS、开发语言、环境以及所用技术介绍321IOS简介322开发语言OBJECTIVEC323开发环境424应用程序框架以及设计模式525第三方类库726本章小结83功能模块设计1031需求分析1032系统模块设计1133登录模块和手势交互模块流程图设计11331用户登录模块设计11332手势交互设计12333多点触摸交互设计1234详细设计12341选择的控件13342界面的绘制14343数据输入与传递14344数据的保存和显示15345自动登录1535本章小结164功能模块的具体实现1741数据请求1742网络判断1743数据的解析1844代理的实现1945算法描述与实现2046本章小结225数据测试2351影视信息列表页数据测试2352具体内容页数据测试2453评论页及回复页数据的测试2554登录测试2655本章总结276总结和展望2861总结2862展望28参考文献29致谢301绪论随着信息网络时代的快速发展,手机使用方式的多样化,智能手机以及移动互联网应用的普及,不断地改变着人们的生活方式。一款好的应用软件成为手机必备,本设计主要基于IOS平台实现了IPHONE客户端查看影视讯息的功能,通过此款应用可以查看当前最新影片的简介、评论、评分等等。本设计采用XCODE开发工具,它具有可视化的编程界面、详细的提示、以及完善的帮助文档,软件开发人员使用起来非常方便。本设计首先概要性地介绍了本文使用的关键技术、MVC模式等;然后给出模块端总体分析与设计,包括系统的需求分析、系统设计要求、系统总体功能设计;其次用图表加文字的方式对设计工作中的重点部分做出了详细地阐述;最后具体描述了模块的实现过程,并对关键技术的实现,进行了代码解析。11课题背景及意义当今社会,手机已经成为人们生活必不可少的一部分,而随着科技的进步,手机已经不再仅仅是只是一个简单的通话工具了,手机日趋于智能化、定制化、网络化、娱乐多媒体化、安全性。伴随着3G技术的日益成熟和3G手机的普及,手机网络化更是成为引人注目的焦点,移动互联网已经成为未来发展的一个主流趋势为业界所认可,手机作为人们使用最广泛的移动信息终端在未来移动互联网中地位举足轻重。未来手机将成为最主要的移动互联网的使用终端,以后在移动互联网实现的包罗万象的服务都会以手机为载体。在此基础上,以手机作为客户端的网络应用程序开发,引起越来越多人的关注。IPHONE手机软件开发代表了未来开发领域的新方向,随着IPHONE应用需求的增加,只要IPHONE手机软件开发应用够创意、够实用,就能够获得丰厚的回报全球越来越多的开发者们投身其中,中国的IPHONE手机软件开发者也不甘心置身局外,由此看来IPHONE软件业的发展形势非常乐观,但是由于语言方面的限制,在中国,IPHONE的软件开发工作还处于缓慢上升阶段,这意味着市场非常庞大,完全有上升和提高的空间,并且,随着人们生活节奏的提高,更加注重跟上时代脚步,完全不满足于现在获取影讯的方式,这无疑对信息的传播方式提出了更高的要求。12国内外的研究现状手机与互联网的融合形成的移动互联网业务是与传统互联网以及传统移动通信业务完全不同的新型业务,移动互联网催生的新型需求日益成为传统IT与通信巨头的蓝海。随着社会的不断发展,各种各样的手机软件参与了人类的活动和社会活动,因此改善人和人之间的关系,使人对人的交流更为广泛。还可以促进大脑智力的发展,让人们的思维更活跃。现今,人类己进入了信息化网络3G时代,手机的应用范围越来越广泛。根据摩根士丹利的一份报告,未来5年移动互联网的人数将超过传统互联网。移动互联网是一块巨大的金矿等待开采。IPHONE是苹果公司推出的一款手机平台,其特点是封闭平台,由苹果推出统一API,编程语言采用OBJECTC,C语言的编程效率还是相当高。目前苹果的IPHONE已经取得很大成功,其推出的软件商店模式也使得开发者大量参与进来,极大丰富了IPHONE的功能,也使开发者有了致富机会,而在中国,移动、电信、联通纷纷推出自己的应用程序商店,并不只为效仿苹果APPSTORE的商业模式,更多的是看到丰富的应用程序在未来将成为用户选择运营商和手机平台的决定因素;而对于开发者来说,手机软件商店开发者分成模式将成为他们的另一个金矿。北京时间2012年3月15日下午消息,苹果周三发布的文件显示,APPSTORE应用商店每周收到的IPHONE和IPAD应用上架申请超过26万次,全年约为130万次2。自从2008年上线以来,APPSTORE收到的应用申请数量已经大幅增长。苹果2009年向美国联邦通讯委员会FCC透露,每周收到的申请为8500次,2010年达到15万次,约为现在的一半3。事实上,自诞生以来,苹果应用商店几乎是以几何级的规模增长。苹果应用商店2008年7月上线,仅用了2个月的时间就突破了1亿次下载。去年10月,APPSTORE应用商店的下载次数超过180亿次。不过光鲜亮丽的数字背后,却也隐含着高风险、高成本的危机,IPHONE最大的问题,这是一个封闭的系统,代码的不开源,从操作系统到开发语言的独具一帜,这注定了开发人员不多,相对于其他操作平台开发人员渐现后劲不足。13本论文的研究内容本文深入分析了课题的背景及意义、IPHONE应用的现状和发展趋势。在前人的研究基础上对影视信息手机客户端进行了重构和设计。本软件在通过对服务器数据的解析,实现了各个对全国影讯的展现,实现对影片简介、评分、评论等等的查看功能。详细功能的设计和实现。14本章小结本章中介绍了IPHONE软件开发的课题背景及意义,阐明了该应用软件开发的国内外研究现状,描述了本论文的研究内容及本论文的结构。2IOS、开发语言、环境以及所用技术介绍21IOS简介IOS最初是设计在IPHONE上的操作系统,苹果公司于2007年1月9日的MACWORLD大会上公布了这个系统,并命名为IPHONEOS,但随着此系统在IPODTOUCH、IPAD以及APPLETV等苹果产品上的广泛应用,苹果公司于2010年6月7日WWDC大会上将其改名为IOS。据CANALYS的数据显示,截止到2011年11月,IOS占据了全球智能手机系统市场份额的30,在美国的市场占有率更是达到了43。随着ANDRIOD开源操作系统的异军突起以及WINDOWSPHONE的发力,IOS市场份额正被一点点的蚕食,但IOS设备的利润率高的惊人,以智能手机为例,IPHONE的利润额占到整个智能手机利润额的80,受益于此,苹果的市值也达到了5000亿美元。IOS操作采用的是多点触控直接操作,控制方法包括滑动、轻触屏幕和图标及按键。操作有滑动、轻按、缩小及放大。此外,IOS移动设备中还内置了加速器,使得旋转IOS设备时,界面也可以得到旋转,这也使得IPHONE等便携设备更便于使用。自3GS开始,IPHONE装备有陀螺仪,这使得IPHONE有了重力感应,游戏效果更加的突出。屏幕的下方是HOME键,点按回到主界面。底部是DOCK,可安放四个使用者最经常使用的程序的图标。屏幕最上方是状态栏,显示一些有关资讯如时间、电池电量和讯号强度等。其余的屏幕用于显示当前的应用程序。启动程序,只需点按该程序的图标,点按屏幕下方的HOME键即退出应用程序。在IPHONE30及后续版本中,及时应用程序退出,当第三方软件收到了新的讯息时,苹果公司的服务器将把这些通知推送至IPHONE或IPODTOUCH上(不管它是否正在运行中)。22开发语言OBJECTIVECOBJECTIVEC,也通常被写作OBJC,是一种扩充C的面向对象编程语言,主要用于MACOSX和GNUSTEP这两个使用OPENSTEP标准的系统。OBJECTIVEC最开始并不支持垃圾回收,因为垃圾回收有漫长的“死亡时间”,会导致整个系统失去功用。但自XCODE40开始,支持自动释放,也就是ARCAUTOMATICREFERENCECOUNTING机制,不需要用户手动去RELEASE每一个对象,编译器会在编译期间自动帮你添加那些以前你经常写的NSOBJECTRELEASE。OBJECTIVEC和C有很多不同之处,OBJECTIVEC不支持运算符重载,也只允许对象单继承,但其引入的CATEGORIES和PROTOCOLS可以提供很多多重继承的好处。很多常见的编译时的性能优化方法都不能应用于OBJC,比如内联函数。23开发环境(1)XCODE工具XCODE是APPLE的开发工具套件,支持项目管理、编辑代码、构建可执行程序、代码级调试、代码的版本管理、性能调优等等。这个套件的核心是XCODE应用本身,它提供了基本的源代码开发环境。开发者可以在XCODE中创建新项目,开始新的IPHONE应用程序。一个项目管理应用程序所有的信息,包含源代码、编译设置和把所有文件整合到一起的编译规则。XCODE项目的核心是项目窗口,开发者可以通过该窗口快速访问应用程序的所有关键元素。组和文件列表管理项目文件,包括了源代码文件和编译后的目标文件。工具栏提供了常用的工具和命令,详细资料面板用来设置项目的工作区域,项目窗口的其他部分可以提供更多的项目信息。项目窗口组和文件列表详细资料面板XCODE有一个高级的代码编辑器,它提供代码补全、语法高亮、代码隐藏(临时隐藏代码块),还有错误、警告和说明的内置注释。XCODE环境中提供了一些默认的设置和用户环境设置。并且需要立即帮助文档,XCODE搜索助手提供了上下文文档,同时开发者可以在帮助文档窗口中浏览和搜索相关信息。(2)SIMULATOR模拟器IPHONESIMULATOR是IPHONESDK中颇为有用的一个工具,无需使用实际的IPHONE/IPODTOUCH就可以测试应用程序。通常不需要直接启动IPHONESIMULATOR它在XCODE运行或是调试应用程序时会自动启动。XCODE会自动将应用程序安装到IPHONESIMULATOR上。开发者在XCODE创建应用程序,在编译时需要选择IPHONE模拟器还有设备。IPHONE模拟器提供了一个本地的应用测试环境。在IPHONE模拟器通过测试后,可以用XCODE编译并运行到与计算机相连接的IPHONE上。在IPHONE上的运行提供了最全面的测试环境,XCODE可以在设备测试时用内置的调试器跟踪代码。(3)INTERFACEBUILDER在INTERFACEBUILDER中创建的NIB文件包含了UIKIT需要在应用中创建相同对象的所有信息。在运行时加载NIB文件,创建它们的运行时版本,设置与INTERFACEBUILDER中相同的属性。它也使用连接信息,建立新建对象和应用程序中其他对象之间的联系。连接信息提供了代码与NIB文件的对象连接关系,同时也提供了对象与用户动作之间的联系。总的来说,在创建应用程序图形用户界面时,使用INTERFACEBUILDER可以节约大量时间。INTERFACEBUILDER摆脱了手工编写代码创建、设置和定位界面对象,并且INTERFACEBUILDER是一个可视的编辑器,开发者可以清楚地看到在运行时界面效果。(4)INSTRUMENTS为了确保软件具有最佳的用户体验,INSTRUMENTS可以分析IPHONE应用在模拟器或真实设备上运行时的性能。INSTRUMENTS将用时间轴图表的形式表现运行应用程序时的各种数据,包括内存消耗、磁盘活动、网络活动和图形表现等。时间轴视图表征了不同类型的应用程序信息,可以收集应用程序的全部行为,而不是某个特定区域的行为。除时间轴视图外,INSTRUMENTS也提供工具帮助开发者分析运行时应用程序的行为。例如,INSTRUMENTS窗口可以保存多个运行时数据,开发者可以观察应用程序的行为哪些需要改进或哪些需要重写,开发者可以保存数据到INSTRUMENTS文档中,也可以随时打开这些数据。24应用程序框架以及设计模式MVC模型视图控制器是XEROXPARC在八十年代为编程语言SMALLTALK80发明的一种软件设计模式,至今已被广泛使用5。最近几年被推荐为SUN公司J2EE平台的设计模式,并且受到越来越多的使用IOS和PHP的开发者的欢迎。MVC是用于拆分GUI应用程序的逻辑方法。MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。MVC模型将所有功能能划分为3种,如图21所示。(1)模型模型对象代表特别的知识和专业技能,它们负责保有应用程序的数据和定义操作数据的逻辑。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。(2)视图视图对象知道如何显示应用程序的模型数据,而且可能允许用户对其进行编辑。视图是用户看到并与之交互的界面。如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。图21MVC模式设计VIEW层用户界面信息接受数据更新请求把用户输入数据传给CONTRLERCONTRLER层接受用户请求调用模型响应用户请求选择视图显示响应的结果MODEL层代表应用程序状态响应状态查询处理业务流程通知VIEW业务状态更新业务处理选择VIEW状态查询用户请求(3)控制器控制器对象是应用程序的视图对象和模型对象之间的协调者。控制器接受用户的输入并调用模型和视图去完成用户的需求。控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后用确定用哪个视图来显示模型处理返回的数据。MVC最重要的一点是多个视图能共享一个模型,正如我所提及的,现在需要用越来越多的方式来访问你的应用程序。对此,其中一个解决之道是使用MVC,无论你的用户想要FLASH界面或是WAP界面;用一个模型就能处理它们。由于你已经将数据和业务规则从表示层分开,所以你可以最大化的重用你的代码了。由于模型返回的数据没有进行格式化,所以同样的构件能被不同界面使用。例如,很多数据可能用HTML来表示,但是它们也有可能要用MACROMEDIAFLASH和WAP来表示。模型也有状态管理和数据持久性处理的功能。因为模型是自包含的,并且与控制器和视图相分离,所以很容易改变你的应用程序的数据层和业务规则。如果你想把你的数据库从MYSQL移植到ORACLE,或者改变你的基于RDBMS数据源到LDAP,只需改变你的模型即可。一旦你正确的实现了模型,不管你的数据来自数据库或是LDAP服务器,视图将会正确的显示它们。由于运用MVC的应用程序的三个部件是相互对立,改变其中一个不会影响其它两个,所以依据这种设计思想你能构造良好的松偶合的构件。对我来说,控制器的也提供了一个好处,就是可以使用控制器来联接不同的模型和视图去完成用户的需求,这样控制器可以为构造应用程序提供强有力的手段。给定一些可重用的模型和视图,控制器可以根据用户的需求选择模型进行处理,然后选择视图将处理结果显示给用户。设计模式(1)工厂模式类工厂方法的实现是为了向客户提供方便,它们将分配和初始化合在一个步骤中,返回被创建的对象,并进行自动释放处理6。工厂方法可能不仅仅为了方便使用。它们不但可以将分配和初始化合在一起,还可以为初始化过程提供对象的分配信息。(2)单利模式FOUNDATION和APPLICATIONKIT框架中的一些类只允许创建单件对象,即这些类在当前进程中的唯一实例。举例来说,NSFILEMANAGER和NSWORKSPACE类在使用时都是基于进程进行单件对象的实例化。当向这些类请求实例的时候,它们会向您传递单一实例的一个引用,如果该实例还不存在,则首先进行实例的分配和初始化。单件对象充当控制中心的角色,负责指引或协调类的各种服务。(3)观察者模式在IOS开发中,通知机制依靠观察者模式得以实现。通知机制是一个中心对象为所有观察者提供变更通知,观察者模式中SUBJECT对象,又可称目标对象,是通知的发布者,又是被观察者。提供注册和取消注册的方法;OBSERVER对象,又可称为观察者,是通知的订阅者。OBSERVER类中,相识SUBJECT,以达到能够接收通知。25第三方类库(1)通信协议请求ASIHTTPREQUEST使用IOSSDK中的HTTP网络请求API,相当的复杂,调用很繁琐,ASIHTTPREQUEST就是一个对CFNETWORKAPI进行了封装,并且使用起来非常简单的一套API,用OBJECTIVEC编写,可以很好的应用在MACOSX系统和IOS平台的应用程序中。ASIHTTPREQUEST适用于基本的HTTP请求,和基于REST的服务之间的交互。(2)TOUCHJSON解析COCOS2DFORIPHONE是开源2D引擎中特性最完备的一个。TOUCHJSON的使用属于不想在一个比较完全的OBJECTIVEC环境中添加C代码,所以不使用JSONCPP来配合COCOS2D,何况COCOS2D的模板工程中本来就带有TOUCHJSON了。另外,因为TOUCHJSON用OBJECTIVEC完成,解析后也是个NSDICTIONARY的对象所以与OBJECITVEC的对象组合使用会更加自然一些。(3)SDWEBIMAGE图片库是一个支持网络图像远程异步下载的UIIMAGEVIEW的类别。具有缓存管理、异步下载、同一个URL下载次数控制和优化等特征。26本章小结本章主要是深入研究了本系统的开发工具XCODE,介绍了一些编辑器模拟器的使用方法和技巧。然后介绍系统MVC框架,指出框架在项目中的应用,接着分别介绍了本系统用到的设计模式和第三方库。3功能模块设计31需求分析(1)首页页面主体内容构成大头图、图文列表。而在大头图中由图片影评标题构成。图文列表中,单条影评的展示方式头像用户名评分影片评分分值标题摘要影片海报。图文列表排序规则同WEB端。先首页影评,再新片热评列表。图文列表处用户初次进入,默认显示20条,在顶部的时候向下拖动,刷新当前页面,在页面底部向上拖动展开显示更多20条。手指在屏幕上下滑动,可以查看影视频道的所有内容。点击头图,进入头图内容页。页面自右向左显示。点击单条图文列表影评,该条处于选中的状态,进入影评内容页。页面自右向左显示。顶部导航处中间显示频道名称时光网影评。底部导航处依次显示首页、新闻、影评、电影院、更多。选中效果在“影评”。(2)具体内容页页面主体内容构成头像、标题、用户名、评分电影、评分分值、发表时间、海报、正文。顶部导航处中间显示频道名称时光网影评。左侧显示返回按钮。底部操作区处依次显示评论ICON(有评论的ICON右下角显示评论数量)、收藏、分享。其中,收藏和分享,未登录用户点击进入登录页。页面自下向上移入。点击缩略图,浮层显示大图。页面可随手指上下滑动。手指点击屏幕的非缩略图区域,全屏显示页面主体内容,再点击,回到正常显示。支持多点触摸,字体变大变小,缩略图大小不变。用户左右滑动可切换上一篇/下一篇电影,点击评论ICON进入查看评论页,页面自右向左显示。(3)查看评论页页面主体内容构成图文列表。图文列表中,单条影评的展示方式头像用户名微影评。图文列表处用户初次进入,默认显示20条,在顶部的时候向下拖动,刷新当前页面,在页面底部向上拖动展开显示更多20条。手指在屏幕上下滑动,可以查看影评频道的所有内容。点击表格,弹出回复按钮、进入发表评论页面,页面自右向左显示。完成时将以另外一种形式显示于回复当前人表格下,页面自右向左显示。顶部导航处中间显示频道名称查看评论。左边显示返回按钮,点击返回按钮返回评论页内容,页面自右向左显示。底部导航处显示写评论导航条编辑区,点击编辑区同样进首页具体内容页转发评论收藏全屏分享写评论回复入发表评论页面,页面自右向左显示完成时将以同种形式显示于表格最下方,页面自右向左显示。(4)发表评论页页面主体内容构成编辑区。图文列表处用户初次进入,编辑区显示默认文字,且关联键盘显示。点击编辑区,默认文字消失,进入编辑状态。顶部导航处中间显示频道名称发表评论。左边显示取消按钮,点击取消按钮不保存评论内容回查看评论页,页面自右向左显示。左边显示提交按钮,点击提交按钮保存评论内容回查看评论页,页面自右向左显示。32系统模块设计程序的整体功能模块,里面包含数据判断、功能选择、输出模块等。数据判断是从COOKIE中取值。具体的模块设计如图31所示。图31设计结构图33登录模块和手势交互模块流程图设计331用户登录模块设计具体内容页中,需要判断是否用户已经登录,如果登录则可以则从COOKIE中取得用户信息,将评论内容直接以用户名发送出去,而未登录时只能匿名发表,而回复别人的评论则必须登录,流程图如图32所示。用户登录COOKIE中是否有值登录成功进行用户评论和回复NY图32登录判断流程图332手势交互设计手势9(GESTURE)是指从用一个或多个手指接触屏幕开始,直到手指离开屏幕为止所发生的所有事件。由于手势是在事件之内传递到系统的,然后事件会传递到响应者链(RESPONDERCHAIN)。如果第一个响应者不处理某个特殊事件(如某个手势),则它会将该事件传递到响应者链的下一级。如果该链中的下一个对象响应此特殊事件,则它通常会处理该事件,这将停止该事件沿着响应者链向前传递。如图33所示。333多点触摸交互设计很明显,触摸(TOUCH)是指手指放到IPHONE屏幕上,手势中涉及的触摸数量等于同时位于屏幕上的手指数量,当触目数量为1在进行移动时,或触目数量大于1时形成多点触目,如图34所示。34详细设计详细设计是对整个程序的整体设计,它包含界面的设计、数据结构的设计、功能过程的显示等。触摸开始单击移动捏合或移动形成多点触摸单指多指开始第一响应者是否响应第N响应者是结束否是否是否响应否图33手势响应链流程图图34多点触摸结构图341选择的控件UILABEL显示文字的控件,它能设置要显示的文字的颜色,大小,格式等相关属性。UIIMAGEVIEW显示图片的控件,根据回来的图片地址,能从缓冲里或者沙盒中选取要显示的图片,它能设置要显示的图片的颜色,大小,格式等相关属性。UITEXTVIEW主要用来对文字的输入,当响应它时自动弹出键盘,一行输入满时可以自动换行。UIBUTTON在IPHONE上主要是一个按钮,该按钮能响应用户一切对其操作的单击、双击、长按事件,可以对其设置响应函数。UITABLEVIEW在IPHONE上一个表格视图是一维的,自顶向下的条目清单,可选的分为多个区域,区域实际上把清单变为二维数据结构,每个区域有可变数目的条目,因此表格里某个指定的条目由它所在区域和所在区域的行(ROW)来决定。UIWEBVIEW在IPHONE上用来显示网站要显示的信息,开发者可以重写网页数据的格式,也可以用JS返回所要用到的数据。342界面的绘制界面区域的视图绘制较为简单。只需要根据当前需求分析,来对每一个也页面进行绘制。先生成一个控制器(UIVIEWCONTROLLER),同时可以生成一个VIEWCONTROLLERXIB然后将要用到的控件拖入相应的位置,形成插座控件,待请求完成时加载数据。如果没有生成NIB文件,则在VIEWCONTROLLERM中用代码实现控件的生成,再从源视图像位图中选择适当的区域将其添加到内存位图中,当所有这些图像方块都绘制到内存位图后,再一次性地将整体图像从内存位图拷贝到屏幕去。绘制流程如图35所示。343数据输入与传递该软件通过用户对界面的操作,实现数据的传递,而在此项目中当点击影评页首页头图和列表时,保存一个当前点击影评的ID将及传至影评详情页。而详情页则根据此ID进行数据请求,将解析后的数据显示到当前页面,而在详情页中,点击图片用JS导出图片链接,将此链接对应的图片从缓存中取出,对其进行操作,而点击详情页下部导航条时则从COOKIE中取取用户数据,看是否登录,然后根据登录状态,进行逻辑分析和判断。是否生成NIB文件将控件加入XIB中完成YN在控制器中加入控件开始生成控制器图35界面绘制流程图344数据的保存和显示前面实现的众多功能都是围绕着位置这一关键来运作的,数据的保存分为两种,一种是临时缓存,临时缓存很简单,SDK封装好的模块我们可以直接拿来用,在数据请求完成时可以直接保存到缓存区。另一种则是保存到沙盒路径既永久保存,此时根据用户名在沙盒中创建一个文件,用单利模式创建一个用户数据模型,每次要用时从数据模型中读取数据,当修改用户信息时则对其进行保存。而数据的显示我们只需将从文件中读到的数据,或者是从缓存中取到的数据加到相应的控件数据上,控件将显示出我们所设计的效果。345自动登录自动登录是由软件自动完成的。用户在上次登录程序中登录了账户而没有对其进行注销而直接退出程序,这时程序会自动将未退出的账号记录下来保存在本地,而当下次启动此应用时,先从文件中去读数据,看上次用户退出时是否处在登录状态,若是将用户名和密码取出,自动请求登录接口,完成自动登录。35本章小结本章主要是对各功能模块的需求做了详细的分析。接着划分系统的模块,对用户登录做了详细的分析,设计智能手机的多点触摸,对系统的各个功能页面进行详细构造,完成UI图的绘制及数据的显示及保存设置,完成自动登录的逻辑设计。4功能模块的具体实现41数据请求ASIHTTPREQUES是一款极其强劲的HTTP访问开源项目。而数据的请求可以分为同步和异步请求,同步意为着线程阻塞,在主线程中使用此方法会使应用停住而不响应任何用户事件10。所以,在应用程序设计时,大多被用在专门的子线程增加用户体验,或用异步请求代替。异步请求更加精准丰富的控制。异步请求的好处是不阻塞当前线程,但相对于同步请求略为复杂,至少要添加两个回调方法来获取异步事件不过可以设置在队列中,同步请求的连接数。往队列里添加的请求实例数大于MAXCONCURRENTOPERATIONCOUNT时,请求实例将被置为等待,直到前面至少有一个请求完成并出列才被放到队列里执行。IBACTIONGRABURLINTHEBACKGROUNDIDSENDERIFSELFQUEUESELFSETQUEUENSOPERATIONQUEUEALLOCINITAUTORELEASENSURLURLNSURLURLWITHSTRING“HTTP/ALLSEEINGICOM“ASIHTTPREQUESTREQUESTASIHTTPREQUESTREQUESTWITHURLURLREQUESTSETDELEGATESELFREQUESTSETDIDFINISHSELECTORSELECTORREQUESTDONEREQUESTSETDIDFAILSELECTORSELECTORREQUESTWENTWRONGSELFQUEUEADDOPERATIONREQUEST42网络判断网络判断是指用户能否连接到网络进行请求数据,为了保证数据的可靠性,需要对用户进行网络连接失败和超时进行判断,当进行数据请求时,如果请求失败,服务器会返回一个错误信息ERROR,而IOSSDK对请求这一块进行了很好的封装,返回一个结构体,而其中的1则代表网络连接失败,2则是连接30秒超时,代码如下DEFINENET_ERROR_CONNET_FAILURE“网络连接失败,请检查网络“DEFINENET_ERROR_TIME_OUT“网络连接超时“VOIDREQUEREQUESTWENTWRONGASIHTTPREQUESTREQUESTNSERRORERROR_HTTPREQUESTERRORSELFNOTIFYDELEGATEWITHNILANDERRORERRORNSINTEGERCODEERRORCODESWITCHCODECASEASICONNECTIONFAILUREERRORTYPE/1COMMUTILSSHOWMESSAGEWITHSTRNET_ERROR_CONNET_FAILUREBREAKCASEASIREQUESTTIMEDOUTERRORTYPE/2COMMUTILSSHOWMESSAGEWITHSTRNET_ERROR_TIME_OUTBREAKDEFAULTBREAK43数据的解析用户请求回来的数据都是JSON字符串,JSON可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。JSON可以将JAVASCRIPT对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从WEB客户机传递给服务器端程序,用户只有经过解析后才能使用,关键代码如下DEFINERELEASE_SAFELY_POINTERIF_POINTER_POINTERRELEASE_POINTERNIL/安全释放数据模型解析;VOIDREQUESTDONEASIHTTPREQUESTREQUESTNSERRORERRORNILNSDATADATA_HTTPREQUESTRESPONSEDATA/请求回来数据CJSONDESERIALIZERJSONPARSERCJSONDESERIALIZERDESERIALIZERNSARRAYREVIEWJSONARRAYJSONPARSERDESERIALIZEASARRAYDATAERRORIFERRORRETURNNSMUTABLEARRAYRESPNSMUTABLEARRAYALLOCINITFORNSDICTIONARYREVIEWDICTINREVIEWJSONARRAYTREVIEWREVIEWTREVIEWALLOCINITREVIEWRATINGREVIEWDICTOBJECTFORKEY“RATING“DOUBLEVALUEREVIEWIDREVIEWDICTOBJECTFORKEYKJSON_IDINTEGERVALUEREVIEWIMAGEREVIEWDICTOBJECTFORKEYKJSON_IMAGEREVIEWNICKNAMEREVIEWDICTOBJECTFORKEYKJSON_NICKNAMEREVIEWUSERIMAGEREVIEWDICTOBJECTFORKEYKJSON_USERIMAGEREVIEWTITLEREVIEWDICTOBJECTFORKEYKJSON_TITLEREVIEWSUMMARYREVIEWDICTOBJECTFORKEYKJSON_SUMMARYRELEASE_SAFELYREVIEWSELFNOTIFYDELEGATEWITHRESPANDERRORERRORRELEASE_SAFELYRESP44代理的实现由于UIWEBVIEW继承UISCROLLVIEW,而UISCROLLVIEW无法捕获UITOUCH事件,故当触摸UIWEBVIEW时,系统将没有任何反应,无法实现全屏,用代理注册手势,用来捕获事件。UIGESTURERECOGNIZERDELEGATE/注册手势/将手势加入要操作的控件UITAPGESTURERECOGNIZERSINGLETAPUITAPGESTURERECOGNIZERALLOCINITWITHTARGETSELFACTIONSELECTORDISPLAY_CONTENTWEBADDGESTURERECOGNIZERSINGLETAP/这个可以加到任何控件上SINGLETAPDELEGATESELFSINGLETAPCANCELSTOUCHESINVIEWNOSINGLETAPRELEASEBOOLGESTURERECOGNIZERUIGESTURERECOGNIZERGESTURERECOGNIZERSHOULDRECOGNIZESIMULTANEOUSLYWITHGESTURERECOGNIZERUIGESTURERECOGNIZEROTHERGESTURERECOGNIZERRETURNYES45算法描述与实现QUARTZ是COCOA全部图表算法11的核心。它是图表算法数据结构和画图的基础,也是MACOSX的窗口服务器。COCOA图表算法的基本概念,包括矩形,点,颜色和系统坐标。(1)矩形和点在QUARTZ的所有绘图包括矩形。在COCOA,你可以用NSRECT结构去描述一个矩形的位置和尺寸TYPEDEFSTRUCTNSPOINTORIGIN/起点NSSIZESIZE/长宽NSRECT原点是画矩形开始的地方。点由NSPOINT来描述,有坐标X和YTYPEDEFSTRUCTFLOATX/横坐标FLOATY/纵坐标NSPOINT矩形的大小区域是一个NSSIZE,包含了长和宽。没有办法去描述一个NSSIZE实例,它必须作为矩形的一部分来使用。TYPEDEFSTRUCTFLOATWIDTH/宽度FLOATHEIGHT/高度NSSIZECOCOA里画图的区域被作为一个矩形。QUARTZ调用这个画图区“BOUNDS”。一个NSPOINT点就能描绘BOUNDS视图的任何位置。标准的QUARTZ系统坐标是基于PDF模式,也就是说画图要从左下角开始,如图41所示。图41坐标系的描述图矩形和点比较的一些函数NSEQUALRECTS/矩形是否相同NSEQUALPOINTS/原点是否相同NSEQUALSIZES/大小是否相同NSCONTAINSRECT/是否包含另一个矩形NSINTERSECTSRECT/两矩形重叠的部分NSPOINTINRECT/点是否在当前矩形中NSMOUSEINRECT/鼠标位置是否在当前矩形中NSISEMPTYRECT/当前矩形是否为空这些函数能在NSGEOMETRYH文件找到。2画图NSRECTS和NSPOINTS只是描述几何体,他们并不能执行画图。我们在DRAWRECT方法里编写代码来更新视图。然后在事件处理循环内,COCOATOUCH调用视图的DRAWRECT让它更新。我们用路径来描述矩形、圆及其他想要画的形状,路径可以描边,填充或既描边又填充。描画一个路径会导致它根据图形环境的状态画出来,填充则会让路径内部的区域被涂满,在CORE里,有4个图元用于表达路径点、线段、弧、和曲线。点是二维空间中的一个位置,不过不要把它想象成像素,一个点完全不占空间,所以画一个点不会再屏幕上显示任何东西,你可以在路径中加入很多的点,想加多少加多少。要想得到能被显示出来的东西,得用其他某种图元,他们由点构成。线段由两个点定义起点和终点。线段可以“描绘”出来,这意味着图形环境上所设的属性都会用来画出两点之间的线段。线段没有面积,所以他们不被填充。相反。可以用一组线段或曲线组成一个形状,闭合路径然后将其填充。弧由一个点(圆心)、半径,起始角和结束角定义。因为弧是占有一定面积的路径,所以可以被填充或描边,或者两者一起。最后,曲线表示的是在“贝赛尔(BEZIER)曲线”。用四个点定义一个曲线,两个点描述断点,另外两个描述每一端的切线。曲线有点像线段,它不是表示一个区域,不过这里的曲线是贝塞尔曲线,调用填充例程会闭合曲线,从而得到一个可供填充的区域。46本章小结本章重点介绍了各功能模块具体实现及编码过程,首先完成的数据的请求,当请求完数据后对网络错误的判断及数据的解析,完成图形算法,本章是整体结构的核心。5数据测试本章主要针对各模块之间切换的测试,主要包括登录状态、未登录的显示,各模块功能的实现。51影评列表页数据测试进入程序,系统从服务器请求数据,然后将其解析显示在终端,如图51所示,中断显示的界面是影视信息的首页。图51影评首页INTERFACETCOMMENTDETAILNSOBJECTDOUBLE_RATING/用户的评分NSSTRING_USERIMAGE/用户图像NSSTRING_NICKNAME/用户昵称NSSTRING_CONTENT/用户评论NSSTRING_MOVIENAME/评论的电影名称NSSTRING_MOIVEIMAGE/评论的电影海报END52具体内容页数据测试点击头图,或列表进入对应的具体内容页,为实现UIWEBVIEW的混排,重写HTML转换格式,当点击网页中的图片时,运用JS技术找到网页中的IMAGE节点,导出图片链接,然后在本身页面上覆盖一个半透明的UIVIEW,将图片显示出来,然后加上下载保存按钮,当触摸非图片区域时,加载的UIVIEW从当前视图移走,实现如图52所示。图52影评详情页INTERFACEREVIEWDETAILNSOBJECTTCOMMENTDETAIL_COMMENTDETAIL;/从前个列表传过来数据NSSTRING_URL/网页显示的内容INT_COMMENTCOUNT/评论总数53评论页及回复页数据的测试由于评论及回复涉及到用户信息12,故请求数据的时候用POST发送,且应该加上签名信息。VOIDPOSTREQUESTWITHURLNSURLURLNSSTRINGSIGNVALUECOMMUTILSMAKEHEADVALUEWITHURLURLANDSTRING“/加上签名_HTTPREQUESTADDREQUESTHEADERCUSTOM_HEADERVALUESIGNVALUE_HTTPREQUESTURLURL_HTTPREQUESTSETREQUESTMETHOD“POST“/POST请求方式IFCOOKIESNIL/从COOKIE取值ISHASCOOKIEYESQUEUEINSTANCEADDOPERATION_HTTPREQUEST请求回来数据如图53所示。点击回复或写评论进入图54所示。(登录状态)图53评论列表页图54回复评论、编写评论页INTERFACETCOMMENTREPLIESNSOBJECT/回复列表NSINTEGER_ID/回复者的IDNSSTRING_NICKNAME/回复者的昵称NSSTRING_USERIMAGE/回复者的头像NSSTRING_DATE/回复时间NSSTRING_CONTENT/回复内容INTERFACECOMMENTLISTNSOBJECTNSINTEGER_ID/评论者的IDNSSTRING_NICKNAME/评论者的昵称NSSTRING_USERIMAGE/评论者的头像NSSTRING_DATE/评论日期NSSTRING_CONTENT/评论内容NSMUTABLEARRAY_COMMENTREPLIESARRAY/评论者中的回复列表END54登录测试当收藏时或者对其进行评论时,若没有登陆,这时会跳入登录页面,如图55所示。图55登陆注册55本章总结本章主要对此项目各模块需求的测试,以及数据传递的测试是否能够准确执行,主要进行了具体内容页各个功能的触摸和点击,正常且能够到达目标状态的数据测试。由于时间问题,可能还有一些功能未进行测试。6总结和展望61总结本文首先阐述了该项目的背景及意义,接着介绍了开发环境及工具,通过用例模型明确需求,当然在此之前的技术研究分析等工作是必不可少的。然后进行总体分析与设计,其中主要包括系统的设计要求分析、系统总体功能描述、数据的需求分析,论文用图表加文字的方式对设计工作中的重点部分做出了阐述。最后,论文把实现过程中的关键技术问题进行了说明,并配有重要代码的解析。在编写此系统时,代码以简洁,运行效率作为最重要的设计原则。将面向对象的编程技术直接应用于系统中,并按功能进

温馨提示

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

评论

0/150

提交评论