毕业论文(设计):基于IOS影视信息手机客户端的设计与实现13497.doc_第1页
毕业论文(设计):基于IOS影视信息手机客户端的设计与实现13497.doc_第2页
毕业论文(设计):基于IOS影视信息手机客户端的设计与实现13497.doc_第3页
毕业论文(设计):基于IOS影视信息手机客户端的设计与实现13497.doc_第4页
毕业论文(设计):基于IOS影视信息手机客户端的设计与实现13497.doc_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

学科分类号 0810 本科学生毕业论文(设计) 题目(中文):基于ios影视信息手机客户端的设计与实现 (英文):the designing and implementation of phone movie imformation client module based on ios 姓 名 谭小清 学 号 200908002213 院 (系) 计算机与通信工程系 专业、年级 通信工程专业 2009级 指导老师 李文(讲师) 2013年 4 月 18 日基于ios影视信息手机客户端的设计与实现摘 要随着信息网络时代的快速发展,手机使用方式的多样化,智能手机以及移动互联网应用的普及,不断地改变着人们的生活方式。一款好的应用软件成为手机必备,本设计主要基于ios平台实现了iphone客户端查看影视讯息的功能,通过此款应用可以查看当前最新影片的简介、评论、评分等等。本设计采用x-code开发工具,它具有可视化的编程界面、详细的提示、以及完善的帮助文档,软件开发人员使用起来非常方便。本设计首先概要性地介绍了本文使用的关键技术、mvc模式等;然后给出模块端总体分析与设计,包括系统的需求分析、系统设计要求、系统总体功能设计;其次用图表加文字的方式对设计工作中的重点部分做出了详细地阐述;最后具体描述了模块的实现过程,并对关键技术的实现,进行了代码解析。【关键词】影视信息;ios;iphone;josn;服务器 the designing and implementation of phone movie imformation based on iosabstractwith the rapid development of information network era, the diversification of mobile phone use, intelligent mobile phone and the popularity of mobile internet applications, constantly changing peoples way of life. a good mobile phone application software become necessary, this design is mainly based on the ios platform of the iphone client to view video message function, through this application can view the latest movie introduction, review, scoring and so on.this design uses the x-code development tools, it has the visual programming interface, detailed tips and perfect help documentation, it is very convenient to use for software developers. this paper firstly briefly introduces the keytechnologies and the mvc mode, secondly gives the total analysis and design of terminal module, including system requirements analysis, system design and system function design; next gives the figures and text of key parts design; at last this paper petends the concrete description of the module realization process, at the same time the key technique codes are provided and analized.【key words】movie imformation;ios;iphone;json;sever目 录1 绪 论11.1 本课题背景及意义11.2 国内外研究现状11.3 本课题的研究内容21.4 本章小结32 ios、开发语言、环境以及所用技术介绍32.1 ios简介32.2开发语言objective-c32.3 开发环境42.4 应用程序框架以及设计模式52.5 第三方类库72.6 本章小结83 功能模块设计103.1 需求分析103.2系统模块设计113.3 登录模块和手势交互模块流程图设计113.3.1 用户登录模块设计113.3.2 手势交互设计123.3.3 多点触摸交互设计123.4 详细设计123.4.1 选择的控件133.4.2 界面的绘制143.4.3 数据输入与传递143.4.4 数据的保存和显示153.4.5 自动登录153.5 本章小结164 功能模块的具体实现174.1 数据请求174.2 网络判断174.3 数据的解析184.4 代理的实现194.5 算法描述与实现204.6 本章小结225 数据测试235.1 影视信息列表页数据测试235.2 具体内容页数据测试245.3 评论页及回复页数据的测试255.4 登录测试265.5 本章总结276 总结和展望286.1 总结286.2 展望28参考文献29致 谢30291 绪 论随着信息网络时代的快速发展,手机使用方式的多样化,智能手机以及移动互联网应用的普及,不断地改变着人们的生活方式。一款好的应用软件成为手机必备,本设计主要基于ios平台实现了iphone客户端查看影视讯息的功能,通过此款应用可以查看当前最新影片的简介、评论、评分等等。本设计采用x-code开发工具,它具有可视化的编程界面、详细的提示、以及完善的帮助文档,软件开发人员使用起来非常方便。本设计首先概要性地介绍了本文使用的关键技术、mvc模式等;然后给出模块端总体分析与设计,包括系统的需求分析、系统设计要求、系统总体功能设计;其次用图表加文字的方式对设计工作中的重点部分做出了详细地阐述;最后具体描述了模块的实现过程,并对关键技术的实现,进行了代码解析。1.1 课题背景及意义 当今社会,手机已经成为人们生活必不可少的一部分,而随着科技的进步,手机已经不再仅仅是只是一个简单的通话工具了,手机日趋于智能化、定制化、网络化、娱乐多媒体化、安全性。伴随着3g技术的日益成熟和3g手机的普及,手机网络化更是成为引人注目的焦点,移动互联网已经成为未来发展的一个主流趋势为业界所认可,手机作为人们使用最广泛的移动信息终端在未来移动互联网中地位举足轻重。未来手机将成为最主要的移动互联网的使用终端,以后在移动互联网实现的包罗万象的服务都会以手机为载体。在此基础上,以手机作为客户端的网络应用程序开发,引起越来越多人的关注。iphone手机软件开发代表了未来开发领域的新方向,随着iphone应用需求的增加,只要iphone手机软件开发应用够创意、够实用,就能够获得丰厚的回报全球越来越多的开发者们投身其中,中国的iphone手机软件开发者也不甘心置身局外,由此看来iphone软件业的发展形势非常乐观,但是由于语言方面的限制,在中国,iphone的软件开发工作还处于缓慢上升阶段,这意味着市场非常庞大,完全有上升和提高的空间,并且,随着人们生活节奏的提高,更加注重跟上时代脚步,完全不满足于现在获取影讯的方式,这无疑对信息的传播方式提出了更高的要求。1.2 国内外的研究现状手机与互联网的融合形成的移动互联网业务是与传统互联网以及传统移动通信业务完全不同的新型业务,移动互联网催生的新型需求日益成为传统it与通信巨头的蓝海。随着社会的不断发展,各种各样的手机软件参与了人类的活动和社会活动,因此改善人和人之间的关系,使人对人的交流更为广泛。还可以促进大脑智力的发展,让人们的思维更活跃。现今,人类己进入了信息化网络3g时代,手机的应用范围越来越广泛。根据摩根士丹利的一份报告,未来5年移动互联网的人数将超过传统互联网。移动互联网是一块巨大的金矿等待开采。iphone是苹果公司推出的一款手机平台,其特点是封闭平台,由苹果推出统一api,编程语言采用object-c,c语言的编程效率还是相当高。目前苹果的iphone已经取得很大成功,其推出的软件商店模式也使得开发者大量参与进来,极大丰富了iphone的功能,也使开发者有了致富机会,而在中国,移动、电信、联通纷纷推出自己的应用程序商店,并不只为效仿苹果app store的商业模式,更多的是看到丰富的应用程序在未来将成为用户选择运营商和手机平台的决定因素;而对于开发者来说,手机软件商店开发者分成模式将 成为他们的另一个金矿。北京时间2012年3月15日下午消息,苹果周三发布的文件显示,app store应用商店每周收到的iphone和ipad应用上架申请超过2.6万次,全年约为130万次2。自从2008年上线以来,app store收到的应用申请数量已经大幅增长。苹果2009年向美国联邦通讯委员会(fcc)透露,每周收到的申请为8500次,2010年达到1.5万次,约为现在的一半3。事实上,自诞生以来,苹果应用商店几乎是以几何级的规模增长。苹果应用商店2008年7月上线,仅用了2个月的时间就突破了1亿次下载。去年10月,app store应用商店的下载次数超过180亿次。不过光鲜亮丽的数字背后,却也隐含着高风险、高成本的危机,iphone 最大的问题,这是一个封闭的系统,代码的不开源,从操作系统到开发语言的独具一帜,这注定了开发人员不多,相对于其他操作平台开发人员渐现后劲不足。1.3 本论文的研究内容本文深入分析了课题的背景及意义、iphone应用的现状和发展趋势。在前人的研究基础上对影视信息手机客户端进行了重构和设计。本软件在通过对服务器数据的解析,实现了各个对全国影讯的展现,实现对影片简介、评分、评论等等的查看功能。详细功能的设计和实现。1.4 本章小结本章中介绍了iphone软件开发的课题背景及意义,阐明了该应用软件开发的国内外研究现状,描述了本论文的研究内容及本论文的结构。2 ios、开发语言、环境以及所用技术介绍2.1 ios简介ios最初是设计在iphone上的操作系统,苹果公司于2007年1月9日的macworld大会上公布了这个系统,并命名为iphone os,但随着此系统在ipod touch、ipad以及apple tv等苹果产品上的广泛应用,苹果公司于2010年6月7日wwdc大会上将其改名为ios。据canalys的数据显示, 截止到2011年11月,ios占据了全球智能手机系统市场份额的30%,在美国的市场占有率更是达到了43%。随着andriod开源操作系统的异军突起以及windows phone的发力,ios市场份额正被一点点的蚕食,但ios设备的利润率高的惊人,以智能手机为例,iphone的利润额占到整个智能手机利润额的80%,受益于此,苹果的市值也达到了5000亿美元。ios操作采用的是多点触控直接操作,控制方法包括滑动、轻触屏幕和图标及按键。操作有:滑动、轻按、缩小及放大。此外,ios移动设备中还内置了加速器,使得旋转ios设备时,界面也可以得到旋转,这也使得iphone等便携设备更便于使用。自3gs开始,iphone装备有陀螺仪,这使得iphone有了重力感应,游戏效果更加的突出。屏幕的下方是home键,点按回到主界面。底部是dock,可安放四个使用者最经常使用的程序的图标。屏幕最上方是状态栏,显示一些有关资讯:如时间、电池电量和讯号强度等。其余的屏幕用于显示当前的应用程序。启动程序,只需点按该程序的图标,点按屏幕下方的home键即退出应用程序。在iphone 3.0及后续版本中,及时应用程序退出,当第三方软件收到了新的讯息时,苹果公司的服务器将把这些通知推送至iphone或ipod touch上(不管它是否正在运行中)。2.2开发语言objective-cobjective-c, 也通常被写作objc,是一种扩充c的面向对象编程语言,主要用于mac os x和gnustep这两个使用openstep标准的系统。objective-c最开始并不支持垃圾回收,因为垃圾回收有漫长的“死亡时间”, 会导致整个系统失去功用。但自xcode4.0开始,支持自动释放,也就是arc (automatic reference counting)机制,不需要用户手动去release每一个对象,编译器会在编译期间自动帮你添加那些以前你经常写的nsobject release。objective-c和c+有很多不同之处,objective-c不支持运算符重载,也只允许对象单继承,但其引入的categories和protocols可以提供很多多重继承的好处。很多常见的编译时的性能优化方法都不能应用于obj-c,比如内联函数。2.3开发环境(1)xcode 工具xcode是apple的开发工具套件,支持项目管理、编辑代码、构建可执行程序、代码级调试、代码的版本管理、性能调优等等。这个套件的核心是xcode应用本身,它提供了基本的源代码开发环境。开发者可以在xcode中创建新项目,开始新的iphone应用程序。一个项目管理应用程序所有的信息,包含源代码、编译设置和把所有文件整合到一起的编译规则。xcode项目的核心是项目窗口,开发者可以通过该窗口快速访问应用程序的所有关键元素。组和文件列表管理项目文件,包括了源代码文件和编译后的目标文件。工具栏提供了常用的工具和命令,详细资料面板用来设置项目的工作区域,项目窗口的其他部分可以提供更多的项目信息。 项目窗口 组和文件列表 详细资料面板xcode有一个高级的代码编辑器,它提供代码补全、语法高亮、代码隐藏(临时隐藏代码块),还有错误、警告和说明的内置注释。xcode环境中提供了一些默认的设置和用户环境设置。并且需要立即帮助文档,xcode搜索助手提供了上下文文档,同时开发者可以在帮助文档窗口中浏览和搜索相关信息。(2)simulator模拟器iphone simulator是iphone sdk中颇为有用的一个工具,无需使用实际的iphone/ipod touch就可以测试应用程序。通常不需要直接启动iphone simulator它在xcode运行(或是调试)应用程序时会自动启动。xcode会自动将应用程序安装到iphone simulator上。开发者在xcode创建应用程序,在编译时需要选择iphone模拟器还有设备。iphone模拟器提供了一个本地的应用测试环境。在iphone模拟器通过测试后,可以用xcode编译并运行到与计算机相连接的iphone上。在iphone上的运行提供了最全面的测试环境,xcode可以在设备测试时用内置的调试器跟踪代码。(3)interface builder在interface builder 中创建的nib文件包含了uikit需要在应用中创建相同对象的所有信息。在运行时加载nib文件,创建它们的运行时版本,设置与interface builder中相同的属性。它也使用连接信息,建立新建对象和应用程序中其他对象之间的联系。连接信息提供了代码与nib文件的对象连接关系,同时也提供了对象与用户动作之间的联系。总的来说,在创建应用程序图形用户界面时,使用interface builder可以节约大量时间。interface builder摆脱了手工编写代码创建、设置和定位界面对象,并且interface builder是一个可视的编辑器,开发者可以清楚地看到在运行时界面效果。(4)instruments为了确保软件具有最佳的用户体验,instruments可以分析iphone应用在模拟器或真实设备上运行时的性能。instruments将用时间轴图表的形式表现运行应用程序时的各种数据,包括内存消耗、磁盘活动、网络活动和图形表现等。时间轴视图表征了不同类型的应用程序信息,可以收集应用程序的全部行为,而不是某个特定区域的行为。除时间轴视图外,instruments也提供工具帮助开发者分析运行时应用程序的行为。例如,instruments窗口可以保存多个运行时数据,开发者可以观察应用程序的行为哪些需要改进或哪些需要重写,开发者可以保存数据到instruments文档中,也可以随时打开这些数据。2.4应用程序框架以及设计模式mvc (模型视图控制器)是xerox parc在八十年代为编程语言smalltalk80发明的一种软件设计模式,至今已被广泛使用5。最近几年被推荐为sun公司j2ee平台的设计模式,并且受到越来越多的使用 ios 和 php 的开发者的欢迎。mvc是用于拆分gui应用程序的逻辑方法。mvc是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。 mvc 模型将所有功能能划分为3种,如图2-1所示。(1)模型模型对象代表特别的知识和专业技能,它们负责保有应用程序的数据和定义操作数据的逻辑。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。(2)视图视图对象知道如何显示应用程序的模型数据,而且可能允许用户对其进行编辑。视图是用户看到并与之交互的界面。如何处理应用程序的界面变得越来越有挑战性。mvc一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。图2-1 mvc模式设计(3)控制器控制器对象是应用程序的视图对象和模型对象之间的协调者。控制器接受用户的输入并调用模型和视图去完成用户的需求。控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后用确定用哪个视图来显示模型处理返回的数据。mvc最重要的一点是多个视图能共享一个模型,正如我所提及的,现在需要用越来越多的方式来访问你的应用程序。对此,其中一个解决之道是使用mvc,无论你的用户想要flash界面或是wap界面;用一个模型就能处理它们。由于你已经将数据和业务规则从表示层分开,所以你可以最大化的重用你的代码了。由于模型返回的数据没有进行格式化,所以同样的构件能被不同界面使用。例如,很多数据可能用html来表示,但是它们也有可能要用macromedia flash和wap来表示。模型也有状态管理和数据持久性处理的功能。因为模型是自包含的,并且与控制器和视图相分离,所以很容易改变你的应用程序的数据层和业务规则。如果你想把你的数据库从mysql移植到oracle,或者改变你的基于rdbms数据源到ldap,只需改变你的模型即可。一旦你正确的实现了模型,不管你的数据来自数据库或是ldap服务器,视图将会正确的显示它们。由于运用mvc的应用程序的三个部件是相互对立,改变其中一个不会影响其它两个,所以依据这种设计思想你能构造良好的松偶合的构件。对我来说,控制器的也提供了一个好处,就是可以使用控制器来联接不同的模型和视图去完成用户的需求,这样控制器可以为构造应用程序提供强有力的手段。给定一些可重用的模型和视图,控制器可以根据用户的需求选择模型进行处理,然后选择视图将处理结果显示给用户。设计模式(1)工厂模式类工厂方法的实现是为了向客户提供方便,它们将分配和初始化合在一个步骤中, 返回被创建的对象,并进行自动释放处理6。工厂方法可能不仅仅为了方便使用。它们不但可以将分配和初始化合在一起,还可以为初始化过程提供对象的分配信息。(2)单利模式foundation 和 application kit 框架中的一些类只允许创建单件对象,即这些类在当前进程中的唯一实例。举例来说,nsfilemanager 和nsworkspace 类在使用时都是基于进程进行单件对象的实例化。当向这些类请求实例的时候,它们会向您传递单一实例的一个引用,如果该实例还不存在,则首先进行实例的分配 和初始化。 单件对象充当控制中心的角色,负责指引或协调类的各种服务。(3)观察者模式在ios开发中,通知机制依靠观察者模式得以实现。通知机制是一个中心对象为所有观察者提供变更通知,观察者模式中subject对象,又可称目标对象,是通知的发布者,又是被观察者。提供注册和取消注册的方法;observer对象,又可称为观察者,是通知的订阅者。observer类中,相识subject,以达到能够接收通知。2.5 第三方类库(1)通信协议请求asihttprequest使用ios sdk中的http网络请求api,相当的复杂,调用很繁琐,asihttprequest就是一个对cfnetwork api进行了封装,并且使用起来非常简单的一套api,用objective-c编写,可以很好的应用在mac os x系统和ios平台的应用程序中。asihttprequest适用于基本的http请求,和基于rest的服务之间的交互。(2)touchjson解析 cocos2d for iphone是开源2d引擎中特性最完备的一个。 touchjson的使用属于不想在一个比较完全的objective c环境中添加c+代码,所以不使用jsoncpp来配合cocos2d,何况cocos2d的模板工程中本来就带有touchjson了。另外,因为touchjson用objective c完成,解析后也是个nsdictionary的对象所以与objecitve c的对象组合使用会更加自然一些。 (3)sdwebimage图片库是一个支持网络图像远程异步下载的uiimageview的类别。具有缓存管理、异步下载、同一个url下载次数控制和优化等特征。2.6 本章小结本章主要是深入研究了本系统的开发工具xcode,介绍了一些编辑器模拟器的使用方法和技巧。然后介绍系统mvc框架,指出框架在项目中的应用,接着分别介绍了本系统用到的设计模式和第三方库。3 功能模块设计3.1 需求分析(1)首页:页面主体内容构成:大头图、图文列表。而在大头图中由图片+影评标题构成。图文列表中,单条影评的展示方式:头像+用户名+评分影片+评分分值+标题+摘要+影片海报。图文列表排序规则:同web端。先首页影评,再新片热评列表。图文列表处:用户初次进入,默认显示20条,在顶部的时候向下拖动,刷新当前页面,在页面底部向上拖动展开显示更多20条。 手指在屏幕上下滑动,可以查看影视频道的所有内容。点击头图,进入头图内容页。页面自右向左显示。点击单条图文列表影评,该条处于选中的状态,进入影评内容页。页面自右向左显示。顶部导航处:中间显示频道名称:时光网影评。底部导航处:依次显示:首页、新闻、影评、电影院、更多。选中效果在“影评”。(2)具体内容页页面主体内容构成:头像、标题、用户名、评分电影、评分分值、发表时间、海报、正文。顶部导航处:中间显示频道名称:时光网影评。左侧显示返回按钮。底部操作区处:依次显示:评论icon(有评论的icon右下角显示评论数量)、收藏、分享。其中,收藏和分享,未登录用户点击进入登录页。页面自下向上移入。点击缩略图,浮层显示大图。页面可随手指上下滑动。手指点击屏幕的非缩略图区域,全屏显示页面主体内容,再点击,回到正常显示。支持多点触摸,字体变大变小,缩略图大小不变。用户左右滑动可切换上一篇/下一篇电影,点击评论icon进入查看评论页,页面自右向左显示。(3)查看评论页页面主体内容构成:图文列表。图文列表中,单条影评的展示方式:头像+用户名+微影评。图文列表处:用户初次进入,默认显示20条,在顶部的时候向下拖动,刷新当前页面,在页面底部向上拖动展开显示更多20条。 手指在屏幕上下滑动,可以查看影评频道的所有内容。点击表格,弹出回复按钮、进入发表评论页面,页面自右向左显示。完成时将以另外一种形式显示于回复当前人表格下,页面自右向左显示。顶部导航处:中间显示频道名称:查看评论。左边显示返回按钮,点击返回按钮返回评论页内容,页面自右向左显示。底部导航处:显示写评论导航条编辑区,点击编辑区同样进入发表评论页面,页面自右向左显示完成时将以同种形式显示于表格最下方,页面自右向左显示。(4)发表评论页页面主体内容构成:编辑区。图文列表处:用户初次进入,编辑区显示默认文字,且关联键盘显示。点击编辑区,默认文字消失,进入编辑状态。顶部导航处:中间显示频道名称:发表评论。左边显示取消按钮,点击取消按钮不保存评论内容回查看评论页,页面自右向左显示。左边显示提交按钮,点击提交按钮保存评论内容回查看评论页,页面自右向左显示。3.2系统模块设计首页具体内容页转发评论收藏全屏 分享写评论回复程序的整体功能模块,里面包含数据判断、功能选择、输出模块等。数据判断是从cookie中取值。具体的模块设计如图3-1所示。图 3-1 设计结构图3.3 登录模块和手势交互模块流程图设计3.3.1 用户登录模块设计具体内容页中,需要判断是否用户已经登录,如果登录则可以则从cookie中取得用户信息,将评论内容直接以用户名发送出去,而未登录时只能匿名发表,而回复别人的评论则必须登录,流程图如图3-2所示。用户登录cookie中是否有值登录成功进行用户评论和回复ny图3-2 登录判断流程图3.3.2 手势交互设计手势9(gesture)是指从用一个或多个手指接触屏幕开始,直到手指离开屏幕为止所发生的所有事件。由于手势是在事件之内传递到系统的,然后事件会传递到响应者链(responder chain)。如果第一个响应者不处理某个特殊事件(如某个手势),则它会将该事件传递到响应者链的下一级。如果该链中的下一个对象响应此特殊事件,则它通常会处理该事件,这将停止该事件沿着响应者链向前传递。如图3-3所示。3.3.3 多点触摸交互设计很明显,触摸(touch)是指手指放到iphone屏幕上,手势中涉及的触摸数量等于同时位于屏幕上的手指数量,当触目数量为1在进行移动时,或触目数量大于1时形成多点触目,如图3-4所示。3.4 详细设计详细设计是对整个程序的整体设计,它包含界面的设计、数据结构的设计、功能过程的显示等。开始第一响应者是否响应第n响应者是结束 否是 否是否响应 否图3-3 手势响应链流程图触摸开始单 击移 动捏合或移动形成多点触摸单指多指 图3-4 多点触摸结构图3.4.1 选择的控件l uilabel显示文字的控件,它能设置要显示的文字的颜色,大小,格式等相关属性。l uiimageview显示图片的控件,根据回来的图片地址,能从缓冲里或者沙盒中选取要显示的图片,它能设置要显示的图片的颜色,大小,格式等相关属性。l uitextview主要用来对文字的输入,当响应它时自动弹出键盘,一行输入满时可以自动换行。l uibutton在iphone上主要是一个按钮,该按钮能响应用户一切对其操作的单击、双击、长按事件,可以对其设置响应函数。l uitableview在iphone上一个表格视图是一维的,自顶向下的条目清单,可选的分为多个区域,区域实际上把清单变为二维数据结构,每个区域有可变数目的条目,因此表格里某个指定的条目由它所在区域和所在区域的行(row)来决定。l uiwebview在iphone上用来显示网站要显示的信息,开发者可以重写网页数据的格式,也可以用js返回所要用到的数据。3.4.2 界面的绘制界面区域的视图绘制较为简单。只需要根据当前需求分析,来对每一个也页面进行绘制。先生成一个控制器(uiviewcontroller),同时可以生成一个viewcontroller.xib然后将要用到的控件拖入相应的位置,形成插座控件,待请求完成时加载数据。如果没有生成nib文件,则在viewcontroller.m中用代码实现控件的生成,再从源视图像位图中选择适当的区域将其添加到内存位图中,当所有这些图像方块都绘制到内存位图后,再一次性地将整体图像从内存位图拷贝到屏幕去。绘制流程如图3-5所示。3.4.3 数据输入与传递该软件通过用户对界面的操作,实现数据的传递,而在此项目中当点击影评页首页头图和列表时,保存一个当前点击影评的id将及传至影评详情页。而详情页则根据此id进行数据请求,将解析后的数据显示到当前页面,而在详情页中,点击图片用js导出图片链接,将此链接对应的图片从缓存中取出,对其进行操作,而点击详情页下部导航条时则从cookie中取取用户数据,看是否登录,然后根据登录状态,进行逻辑分析和判断。是否生成nib文件将控件加入xib中完 成yn在控制器中加入控件开始生成控制器图3-5 界面绘制流程图3.4.4 数据的保存和显示前面实现的众多功能都是围绕着位置这一关键来运作的,数据的保存分为两种,一种是临时缓存,临时缓存很简单,sdk封装好的模块我们可以直接拿来用,在数据请求完成时可以直接保存到缓存区。另一种则是保存到沙盒路径既永久保存,此时根据用户名在沙盒中创建一个文件,用单利模式创建一个用户数据模型,每次要用时从数据模型中读取数据,当修改用户信息时则对其进行保存。而数据的显示我们只需将从文件中读到的数据,或者是从缓存中取到的数据加到相应的控件数据上,控件将显示出我们所设计的效果。3.4.5 自动登录自动登录是由软件自动完成的。用户在上次登录程序中登录了账户而没有对其进行注销而直接退出程序,这时程序会自动将未退出的账号记录下来保存在本地,而当下次启动此应用时,先从文件中去读数据,看上次用户退出时是否处在登录状态,若是将用户名和密码取出,自动请求登录接口,完成自动登录。3.5 本章小结本章主要是对各功能模块的需求做了详细的分析。接着划分系统的模块,对用户登录做了详细的分析,设计智能手机的多点触摸,对系统的各个功能页面进行详细构造,完成ui图的绘制及数据的显示及保存设置,完成自动登录的逻辑设计。4 功能模块的具体实现4.1 数据请求 asihttpreques是一款极其强劲的http访问开源项目。而数据的请求可以分为同步和异步请求,同步意为着线程阻塞,在主线程中使用此方法会使应用停住而不响应任何用户事件10。所以,在应用程序设计时,大多被用在专门的子线程增加用户体验,或用异步请求代替。异步请求更加精准丰富的控制。异步请求的好处是不阻塞当前线程,但相对于同步请求略为复杂,至少要添加两个回调方法来获取异步事件不过可以设置在队列中,同步请求的连接数。往队列里添加的请求实例数大于maxconcurrentoperationcount时,请求实例将被置为等待,直到前面至少有一个请求完成并出列才被放到队列里执行。 - (ibaction)graburlinthebackground:(id)sender if(!selfqueue)selfsetqueue:nsoperationqueueallocinitautorelease;nsurl*url=nsurlurlwithstring:;asihttprequest*request=asihttprequestrequestwithurl:url;requestsetdelegate:self;request setdidfinishselector:selector(requestdone:);requestsetdidfailselector:selector(requestwentwrong:);selfqueueaddoperation:request;4.2 网络判断网络判断是指用户能否连接到网络进行请求数据,为了保证数据的可靠性,需要对用户进行网络连接失败和超时进行判断,当进行数据请求时,如果请求失败,服务器会返回一个错误信息error,而ios-sdk对请求这一块进行了很好的封装,返回一个结构体,而其中的1则代表网络连接失败,2则是连接30秒超时,代码如下:#define net_error_connet_failure 网络连接失败,请检查网络#define net_error_time_out 网络连接超时- (void)reque requestwentwrong:(asihttprequest *)requestnserror* error = _httprequest.error;self notifydelegatewith:nil anderror:error;nsinteger code = error.code;switch (code) case asiconnectionfailureerrortype: /1 commutils showmessagewithstr:net_error_connet_failure;break;case asirequesttimedouterrortype: /2commutils showmessagewithstr: net_error_time_out;break;default: break;4.3 数据的解析用户请求回来的数据都是json字符串,json可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。json 可以将 javascript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 web 客户机传递给服务器端程序,用户只有经过解析后才能使用,关键代码如下:#define release_safely(_pointer)if(_pointer)_pointer release;_pointer = nil; /安全释放数据模型解析;- (void) requestdone :(asihttprequest *)requestnserror* error = nil;nsdata* data = _httprequest.responsedata; /请求回来数据cjsondeserializer* jsonparser = cjsondeserializer deserializer; nsarray* reviewjsonarray = jsonparser deserializeasarray:data error:&error;if (error)return;nsmutablearray* resp = nsmutablearray alloc init;for(nsdictionary* reviewdict in reviewjsonarray)treview* review = treview alloc init; review.rating = reviewdict objectforkey:rating doublevalue;review.id = reviewdict objectforkey:kjson_id integervalue;review.image = reviewdict objectforkey:kjson_image;review.nickname = reviewdict objectforkey:kjson_nickname;review.userimage = reviewdict objectforkey:kjson_userimage;review.title = reviewdict objectforkey:kjson_title;review.summary = reviewdict objectforkey:kjson_summary;release_safely(review);self notifydelegatewith:resp anderror:error;release_safely(resp);4.4 代理的实现 由于uiwebview继承uiscrollview,而uiscrollview无法捕获uitouch事件,故当触摸uiwebview时,系统将没有任何反应,无法实现全屏,用代理注册手势,用来捕获事件。uigesturerecognizerdelegate/注册手势/将手势加入要操作的控件uitapgesturerecognizer*singletap=uitapgesturerecognizerallocinitwithtarget:selfaction:selector(display);_contentwebaddgesturerecognizer:singletap; /这个可以加到任何控件上singletap.delegate=self;singletap.cancelstouchesinview=no;singletaprelease;- (bool)gesturerecognizer:(uigesturerecognizer*)gesturerecognizershouldrecognizesimultaneouslywithgesturerecognizer:(uigesturerecognizer*)othergesturerecognizerreturnyes4.5 算法描述与实现quartz 是 cocoa 全部图表算法11的核心。它是图表算法数据结构和画图的基础,也是 mac os x 的窗口服务器。cocoa 图表算法的基本概念,包括:矩形,点,颜色和系统坐标。(1)矩形和点在quartz 的所有绘图包括矩形。在 cocoa,你可以用 nsrect 结构去描述一个矩形的位置和尺寸:typedef struct nspoint origin; /起点nssize size; /长宽 nsrect;原点是画矩形开始的地方。点由 nspoint 来描述,有坐标 x 和 y:typedef struct float x; /横坐标float y; /纵坐标 nspoint;矩形的大小区域是一个nssize,包含了长和宽。没有办法去描述一个 nssize 实例,它必须作为矩形的一部分来使用。typedef struct float width; /宽度float height; /高度 nssize;cocoa 里画图的区域被作为一个矩形。quartz 调用这个画图区“bounds”。一个 nspoint 点就能描绘 bounds 视图的任何位置。标准的 quartz 系统坐标是基于 pdf 模式,也就是说画图要从左下角开始,如图4-1所示。图 4-1 坐标系的描述图矩形和点比较的一些函数nsequalrects /矩形是否相同nsequalpoints /原点是否相同nsequalsizes /大小是否相同nscontainsrect /是否包含另一个矩形nsintersec

温馨提示

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

评论

0/150

提交评论