毕业设计(论文)-基于iphone iOS操作系统的app爱限免的设计与实现.doc_第1页
毕业设计(论文)-基于iphone iOS操作系统的app爱限免的设计与实现.doc_第2页
毕业设计(论文)-基于iphone iOS操作系统的app爱限免的设计与实现.doc_第3页
毕业设计(论文)-基于iphone iOS操作系统的app爱限免的设计与实现.doc_第4页
毕业设计(论文)-基于iphone iOS操作系统的app爱限免的设计与实现.doc_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

沈阳建筑大学毕业设计、沈阳建筑大学毕业论文沈阳建筑大学毕业设计说明书毕 业 设 计 题 目 基于iphone iOS操作系统的app爱限免的设计与实现 学院专业班级 信息与控制工程学院 计算机科学与技术 10-02班 学 生 姓 名 性别 指 导 教 师 职称 2014年 6月 9日摘 要随着近年来智能手机的爆炸性增长。越来越多的手机客户端被开发者开发,并放入到了苹果商城中。这些手机客户端不仅是内容新颖,而且数量庞大。开发者们为了使自己客户端的下载量增加,在特定时间,会对自己的的客户端采取免费或者是降价等活动。消费者可以在这时下载自己喜欢的客户端程序,享受优惠活动。本论文主要介绍手机客户端爱限免的设计与实现。该应用的编程环境是苹果公司推出的IDE XCode,这个IDE集成了编辑环境,编译环境,手机模拟器,代码版本管理,并且具有查看应用运行时内存消耗等众多功能。编程语言采用的是Objective-C,Objective-C相对于别的编程语言具有更易阅读的特性。该应用主要解决了网络数据的下载解析,UI界面的搭建,数据库保存数据等技术。全套设计加扣 3012250582该应用最终实现了限免,降价,免费,专题,热榜,搜索,设置等六大功能模块。其中限免,降价,免费,热榜四个功能模块在界面实现上是一样的,差异只是在数据解析部分,所以这四个功能模块继承了具有共同属性的父类。在专题界面,需有图片具有响应事件点击的能力,所以继承和重写了UIImageView,在子类中实现该图片是可以点击的。搜索功能模块,实现了自定义的界面。在设置界面,创建了各个功能按钮,每个按钮具有一个设置属性。经过测试,六个功能模块都能稳定的运行的,界面效果符合要求。用户收藏的app,能正确的保存到数据库中。关键词:智能手机;手机客户端;降价;编程实现;测试 ABSTRACT In recent years, with the rapid growth of mobile phones, More and more mobile phone client is developed by developers, and into the apple store. The mobile client is not only a novel, and large Numbers. Developers in order to increase their client downloads, at a certain time, for their clients to take free or decrease the price and other activities. Then consumers can download the client program that oneself like, enjoy the preferential activities.Thispapermainlyintroducesthedesignandimplementationofmobileclientlimitfreelove.TheapplicationprogrammingenvironmentisapplesIDEXCode,theIDEintegrationeditingenvironment,compileenvironment,mobilephonesimulator,codeversionmanagement,andhavetochecktheapplicationruntimememoryconsumption,andsoonfunction. ProgramminglanguageistheObjective-C,Objective-Crelativetootherprogramminglanguagehasthecharacterthatiseasiertoread.Thisapplicationismainlytosolvethenetworkdatadownloadand parsing,theconstructionoftheUI,databasetostoredata.Finallyachievedlimitexemption,pricecut,free,topics,hotlist,search,Settings,andsoonsixbigfunctionmodulesinthisapplication.Whichlimitexemption,pricecut,free,hotlistfourfunctionmodulesintheinterfaceimplementationisthesame,differentonlyinthedataanalysispart,sothefourfunctionmodulesinheritedwithcommonattributesoftheparentclass.Atthesubjectinterface,thepictureneedstohastheabilitytorespondtoeventsclick,soinheritanceandoverridetheUIImageView,implementedinsubclassesiscanclickontheimage.Searchfunctionmodule,theinterfaceiscustomed.Inthesetupinterface,createthefunctionofeachbutton,eachbuttonhasasetproperties.Aftertesting,sixfunctionalmodulescanbestablerunning,interfaceeffectmeetstherequirements.Theappcollectbyuserscansavedintothedatabase correctly. Keywords: smart phones; mobile phone client;price cut;programming implementation;test目录 第一章引言11.1 课题的目的和意义11.2移动互联网时代的新宠:手机客户端2第二章iOS、语言、环境以及所用技术介绍32.1 iOS简介32.2 Objective-C语言42.3 Xcode开发环境52.4 SQLite数据库52.5 JSON解析6第三章需求分析83.1 设计背景83.2 功能需求8第四章总体设计104.1 程序总体架构104.1.1 用户界面架构104.1.2 程序设计架构114.2 功能模块设计12第五章详细设计与实现145.1限免模块设计145.2降价模块设计165.3免费模块设计185.4专题模块设计195.5热榜模块设计215.6搜索模块设计225.7设置模块设计255.8网络模块设计285.9 数据库模块设计30第六章 测试336.1 限免模块测试336.2 降价模块测试346.3 免费模块测试346.4 专题模块测试356.5 热榜模块测试356.6 搜索模块测试356.7 设置模块测试37参考文献39致 谢40附录一 中文译文附录二 英文原文附录三 源代码沈阳建筑大学毕业设计基于iphone iOS操作系统的app爱限免的设计与实现第一章 引言近几年,人们用移动设备接入互联网的时间显著上升,与此相伴,手机应用程序的的数量急剧增加,各种新颖的客户端出现在了我们的视野中。1.1 课题的目的和意义随着3G时代的到来,手机上网已经慢慢地进入了人们的生活,谈到未来基于手机上的无线互联网的发展趋势究竟是手机客户端上网还是手机wap上网,这个阶段我们还很难过早的下定论,但是有一点可以肯定,那就是用户体验的好坏将直接决定两者的前途命运。我们现在就来看看在的无线互联网网络环境以及各种条件之下,手机客户端上网与手机wap上网各自的优缺点,做一个简单的评测。无线互联网行业以手机客户端为主的产品很多。客户端软件,需要在手机上安装才能使用。而利用手机WAP上网,第一次则需要手动输入网址,当然可以将该网址保存为标签,之后也可以做到较为方便的访问。在手机上完成输入网址或者在众多保存的标签中查找需要的网址,确实是需要一定时间的。目前除了游戏类客户端,渐渐地商务应用的客户端渐渐被大家熟悉和应用,为我们的生活、工作带来了便捷。手机客户端为企业开辟全新的营销推广手段,手机客户端通过软件技术将公司把产品和服务介绍安装于客户的手机上,相当于把公司的名片、宣传册和产品等一次派发给用户,而且用户还会主动的保留他们。通过手机客户端进行这些宣传的花费都是很低的,用户使用次数也不受限制,最便携的企业宣传册,在手机上轻松携带大容量的企业资讯,省去资料携带不便的烦恼,随时随地洽谈客户企业成本,也不会随着客户下载数量的增加而增加。现在手机客户端的市场前景非常大,其中占手机客户端市场最大的是系统是 Android、iOS、windows三大系统。近年来,越来越多的移动app被富有创意的开发者放入了苹果商城或者是谷歌商城,这些app的数量是非常庞大的。开发者开发出app,当然是希望被消费者下载和使用,并且给自己带来可观的收入。但是面对商城货架上玲琅满目的app,消费者可能会陷入选择恐惧症。在这样的情况下,如果主动降低app的下载价格,将对消费者产生不小的诱惑力,所以这款名叫爱限免的app是实时的搜集限时免费和降价的app,给消费者带来福音。有的消费者期待下载自己细化你的app,但是由于app现有的价格不是在接受的范围之内,就放弃了这一选择。但是爱限免这款app,将所有在苹果商城的app降价信息都归总起来,消费者可以在这里轻松的发现自己喜欢的app是否在活动中。通过这种方式,增加了移动客户端的下载量。1.2移动互联网时代的新宠:手机客户端据中国互联网络信息中心(CNNIC)最新的统计报告(2011年7月),截至2011年6月底,中国手机网民规模为3.18亿。手机网民在总体网民中的比例为65.5%,移动互联网时代已经全面到来。那移动互联网究竟给我们带来了什么?环顾一下四周,我们会不难发现,无论是在公交车还是在地铁,总有不少人低着头沉默不语,他们紧盯着自己手中的手机或平板,手中也没闲着,在不停的比划,凑近一看,他们要么在玩游戏,要么在上qq,要么在微博,要么在一些社交网站。我们会发现,一旦有一点空闲的时间,我们就会拿出我们的手机来玩。蹲厕所时,隔壁会传来小鸟撞击石头而发出的叫声;在电梯中,总会有朋友拿出手机或ipad登陆自己的某个客户端。手机客户端作为登入移动互联网最便捷的方式,为企业进入移动营销时代开辟了一条光明大道。功能丰富、图文并茂,手机客户端带给用户很多新鲜体验。智能手机屏幕大、触控操作的特点,也引发手机客户端充分体现了完美的大图触控效果,让用户享受指尖在触屏滑动的人机交互,体验指尖在触摸屏上的酷炫操作,简单轻松实现手机访问页面的畅游体验。不得不说,智能手机客户端,是现代科技与艺术的完美结合。传统PC互联网时代,搜索引擎一直把持着互联网的第一入口,因而催生了谷歌百度等巨无霸公司。山不转水转。数据显示,当前更多用户已经习惯于通过手机客户端直接访问移动互联网。手机客户端已经取代搜索引擎成为了移动互联网的第一入口。互联网入口的争夺,是用户资源的争夺,也是信息时代最具价值的财富争夺。谁掌握了移动互联网的入口,谁就掌握了最具用户价值的巨大财富。这是一座巨大的金矿。从PC平台到移动平台的发展,从互联网搜索引擎到移动互联网手机客户端的发展,已经显现出来基于手机客户端的移动营销已经成为挖掘财富的重要阵地。手机客户端在带给用户出色体验的同时,也给商家带来了新的营销方式,为中小企业掘金移动互联网市场带来了新的有效途径。第二章 iOS、语言、环境以及所用技术介绍iOS平台使用了构建Mac OS X时积累的知识,iOS平台的许多工具和技术也源自Mac OS X平台。尽管它和Mac OS X很类似,但是没有Mac OS X开发经验也可以开发iOS程序。iOS SDK提供了创建iOS应用程序所需要的环境和工具。利用iOS SDK开发应用时所用的编程语言是Objective-C。下面具体介绍一下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上(不管它是否正在运行中)。iOS平台上的应用程序之所以繁荣,得益于苹果公司及时推出了基于iOS平台的SDK。2007年10月17日,史蒂夫乔布斯在一封张贴于苹果公司网页上的公开信上宣布软件开发工具包。它将在2008年2月提供给第三方开发商。软件开发工具包于2008年3月6日发布,并允许开发人员开发iPhone和iPod touch的应用程序,并对其进行测试,名为“ iPhone手机模拟器” 。然而,只有在付出了iPhone手机开发计划的费用后,应用程序才能发布。自从Xcode3.1 发布以后,Xcode就成为了iPhone软件开发工具包的开发环境。第一个Beta版本是iPhone SDK 1.2b1(build 5A147p)它在发布后立即就能够使用了。由于iOS是从于Mac OS X核心演变而来,因此开发工具也是基于Xcode。该SDK需要拥有英特尔处理器且运行Mac OS X Leopard系统的Mac才能使用。其他的操作系统, 包括微软的Windows操作系统和旧版本的Mac OS X都不支持。SDK本身是可以免费下载的,但为了发布软件, 开发人员必须加入iPhone开发者计划, 其中有一步需要付款以获得苹果的批准。加入了之后,开发人员们将会得到一个牌照,他们可以用这个牌照将他们编写的软件发布到苹果的App Store。发布软件一共有三种方法: 通过App Store,通过企业配置仅在企业内部员工间应用,也可通过基于Ad-hoc而上载至多达100部iPhones。这个发布iPhone软件的形式的出现使人们不能根据GPLv3的授权代码发布软件。任何根据GPLv3任何代码的开发者也必须得到GPLv3的授权。同时,开发商在散发布已经由GPLv3 授权的应用软件的同时必须提供由苹果公司提供的密匙以允许该软件修改版本的上载。2.2 Objective-C语言Objective-C, 也通常被写作ObjC,是一种扩充C的面向对象编程语言,主要用于Mac OS X和GNUstep这两个使用OpenStep标准的系统。Objective-C是非常实际的语言。它是一个用C写成、很小的运行库,只会令应用程序的大小增加很小,和大部分OO系统使用极大的VM执行时间会取代了整个系统的运作相反。ObjC写成的程序通常不会比其原始码大很多。而其函式库(通常没附在软件发行本)亦和Smalltalk系统要使用极大的内存来开启一个窗口的情况相反。Objective-C最开始并不支持垃圾回收,因为垃圾回收有漫长的“死亡时间”, 会导致整个系统失去功用。但自Xcode4.0开始,支持自动释放,也就是ARC (Automatic Reference Counting)机制,不需要用户手动去Release每一个对象,编译器会在编译期间自动帮你添加那些以前你经常写的NSObject release。Objective-C不包括命名空间机制(namespace mechanism)。取而代之的是程序设计师必须在其类别名称加上前缀,时常引致冲突。在2004年,在Cocoa编程环境中,所有Mac OS X类别和函式均有NS作为前缀,例如NSObject或NSButton来清楚分辨它们属于Mac OS X核心;使用NS是由于这些类别的名称在NeXTSTEP开发时定下。虽然Objective-C是C的母集,但它也不视C的基本型别为第一级的对象。Objective-C和C+有很多不同之处,Objective-C不支持运算符重载,也只允许对象单继承,但其引入的Categories和protocols可以提供很多多重继承的好处。很多常见的编译时的性能优化方法都不能应用于Obj-C,比如内联函数。2.3 Xcode开发环境Xcode是开发苹果应用程序的必备开发环境, 自4.0开始,开发人员就可以利用Xcode开发基于iOS的iPad、iPhone、iPod Touch 设备应用程序,只要你有Mac OS X Snow Leopard 10.6.2 以上版本 Mac OS 操作系统,便可安装ios sdk,如果你有iOS设备,便可让Xcode把应用程序部署到你的iOS设备上。另外,你还可以使用iPhone仿真器进行调试。Xcode提供了友好而方便的应用程序开发环境,这样你就可以开发出好的iOS应用程序了。Xcode支持多种语言,如:C、C+、Objective-C、Java。另外,Xcode 的编译速度也极快。Xcode还具有自由撤消的强大功能:Xcode 4 具有虚拟模型和设计功能,这可以让你更轻松的开发和维护应用程序。2.4 SQLite数据库iOS包含了SQLite数据库,它是一个简单的、轻量级的数据库,并宣布是“世界上部署的最广泛的数据库引擎”。目前很多嵌入式产品都使用SQLite,SQLite占用资源非常的低,在嵌入式设备中,只需要几百K的内存就够了。它支持Windows/Linux/Unix等主流的操作系统,比起Mysql、PostgreSQL这两款世界著名的开源数据库管理系统,它的处理速度都比他们快。下面以具体实例的形式讲述创建SQLite的方法:1.创建数据库命令:sqlite3 shopping.db 若shopping.db文件已存在,则打开数据库,若不存在,则创建它。2.创建表格: create table shopping (key integer primary key,item text,price double,groupid integer,dateadded date);3.插入数据: insert into “shppinglist” (item,price,groupid,dateadded) values (“iPhone 3G”, “199”, 1, DATETIME(NOW)4.查询:select * from shoppinglist2.5 JSON解析JSON(Javascript Object Notation)是一种轻量级的,以文字为基础,且易于让人阅读。尽管JSON是在Javascript的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯。JSON格式是1999年JavaScript Programming Language, Standard ECMA-262 3rd Edition的子集合,所以可以在JavaScript以eval()函式(javascript通过eval()调用解释器)读入。不过这并不代表JSON无法使用于其他语言,事实上几乎所有与网页开发相关的语言都有JSON函式库。 JSON用于描述数据结构,有以下形式存在:1.对象 (object):一个对象以“”开始,并以“”结束。一个对象包含一系列非排序的名称值对,每个名称值对之间使用“,”分割。2.名称值对(collection):名称和值之间使用“:”隔开,一般的形式是:name:value一个名称是一个字符串;一个值可以是一个字符串,一个数值一个对象,一个布尔值,一个有序列表,或者一个null值。3.值的有序列表(Array):一个或者多个值用“,”分割后,使用“”,“”括起来就形成了这样的列表,形如:collection, collection4.字符串:以括起来的一串字符。5.数值:一系列0-9的数字组合,可以为负数或者小数。还可以用“e”或者“E”表示为指数形式。6.布尔值:表示为 true 或者 false。第三章 需求分析限时免费的app的信息是在服务器端上加入的,手机客户端是典型的c/s结构,客户端需要实时的去服务器请求加入优惠活动的app的信息,并且展示出来供用户查看和下载。3.1 设计背景随着智能手机的发展,人们的工作和生活越来越离不开手机,依据手机应运而生的手机客户端成为用户主要的关注对象。数据显示,目前每部智能手机中客户端应用程序的安装数量平均在6.5个左右。功能丰富、图文并茂,手机客户端带给用户很多新鲜体验。智能手机屏幕大、触控操作的特点,也引发手机客户端充分体现了完美的大图触控效果,让用户享受指尖在触屏滑动的人机交互,体验指尖在触摸屏上的酷炫操作,简单轻松实现手机访问页面的畅游体验。不得不说,智能手机客户端,是现代科技与艺术的完美结合。但是面对商城货架上玲琅满目的app,消费者可能会陷入选择恐惧症。在这样的情况下,如果主动降低app的下载价格,将对消费者产生不小的诱惑力,所以这款app是实时的搜集限时免费和降价的app,给消费者带来福音。3.2 功能需求此次程序设计任务是iOS平台下的爱限免客户端的设计,程序将在真实手机运行调试。此次程序设计用户界面要求较为友好,由于针对的用户为iOS智能手机用户,因此程序的操作全部可以通过触控完成操作。本爱限免客户端要求设计合理。在设计完成后,要求程序能够实现稳定的运行。同时,程序还必须能够实现对app的限免,降价,免费,下载榜的信息展示和保证数据的完整性等。最后该客户端在获取网络信息时要具有较高的执行效率。此次程序设计开发环境的操作系统要求是Mac OS X。此次程序设计需要在XCode环境下开发。本客户端的数据都是通过网络来自爱限免的服务器,在客户端需用户会收藏自己喜欢的app,所以在客户端有数据库的设计,用于存储移动app的信息。基于系统需求分析,该系统需要实现以下的功能:(1)实现限免,降价,免费,专题,热榜模块中网络数据的显示,并在友好的界面下,实现界面的下拉刷新,在下拉的后,要保证所有的数据都是最新的数据和上拉加载更过的数据。保证上拉时候的流畅性。(2)自定义搜索的界面,并在用户输入搜索的关键字的过程中,实现界面的模糊效果,让用户不能点击界面。关键字输入完以后,向网络发送请求,返回搜索的结果,并用简洁的界面显示搜索的结果。(3)允许用户对app进行一些自定义的设置,比如收藏app的取消和app本身属性等操作。第四章 总体设计4.1 程序总体架构4.1.1 用户界面架构程序的用户界面架构,在用户界面上,主要使用了系统提供的UIKit框架进行用户界面的搭建。由于限免,降价,免费,专题,热榜五个模块直接呈现在用户的第一界面上, 所以使用了UITabBarController对五个基本的模块界面进行管理,在五个界面之间可以进行相互的切换,各个模块的工作不影响其他模块的工作。用户在其中的一个界面进行操作时,比如用户点击了限免模块中的其中一款app,那么该界面必须推进到另个界面,显示该app的详细信息,那么为了实现各个模块都能往里推入,所以各个界面是用UINavigationController进行管理的,每一个导航栏都能往里推入界面,其原理是界面对象的压栈。这样整个界面实际上是一个树形结构。UITabBarController是该树形结构的根,各个UINavigationController是该树形结构的各个分支,在UINavigationController中推出UIViewController和弹窗试图类似于树叶。界面的架构模型如图4-1所示:图4-1 界面架构模型类的树形结构图如图4-2所示:图4-2 类的树形结构由于每个界面上都要搜索的功能,所在搜索的用户界面,设置在了限免,免费,降价,专题,免费这个五个界面的顶端,便于用户搜索。进入用户设置界面的入口是放在了限免,降价,免费,热榜每个界面的UINavigationBar上,每个UINavigationBar上都放置barButtonItem,这些item的点击事件就是进入到设置界面。4.1.2程序设计架构由于限免,降价,免费,专题,热榜这个五个界面具有很多的相同的元素,所以他们继承同一个父类,在父类中,设计了设置页面的标题,页面请求的url和请求的返回值等方法。在这个父类中,可以设置一些页面共有的属性,比如页面的背景颜色,在设置为白色以后,在iOS7系统下,可以有效地减少卡顿的现象,类似于背景颜色的属性都可以在该父类中设置。由于限免,降价,免费,热榜这四个模块中的cell基本一致,所以在程序设计中,将这四个功能模块在同一个UIViewController中去实现,实现数据的展示,选用了UITableView,所以这个四个模块的区分,是在-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath:)indexPath的回调方法中进行区分的。专题模块单独使用一个UIViewController进行实现。在限免,降价,免费,专题,热榜,五个界面都需要进入的详细界面,也是使用UIViewController进行实现的。由于各个功能模块都需要进行网络数据的请求,程序中将网络请求单独列为了一个模块,网络请求使用ASI第三方库,并且在这基础上进行封装。使用一个请求管理类,对所有的请求进行管理,在每一个请求完成以后,请求管理类接受到服务器响应的数据,并对数据进行解析,解析完成之后,发出一条通知。各个界面注册了通知,所以在请求管理类发出通知以后,界面就能接受到通知,进而拿到数据。因而网络数据解析完成以后,需要传给不同的界面,这是一对多的传值,所以使用的通知的方式来进行传值。用户可以收藏喜欢的app,app数据的存储,使用数据库来实现的。为了便于对数据库的操作,使用了FMDatabase来操作SQLite数据库,由于只存储app的信息,所以只用一张表完成存储。并且该数据库不会被多个线程同时操作,不必考虑线程的安全性。4.2 功能模块设计按照功能分成七大功能模块,如表4-1:表4-1 功能模块表模块简述功能描述限免将限时免费的app的信息展示出来,使用下拉刷新来更新界面数据。下拉刷新,可以刷新所有app数据信息,上拉加载更多的app数据信息。降价将降价的app信息展示出来。下拉刷新,可以刷新所有app数据信息,上拉加载更多的app数据信息。免费将免费的app信息展示出来。下拉刷新,可以刷新所有app数据信息,上拉加载更多的app数据信息。专题将所有在一个专题的app进行合并,然后做成一个模块集中展示,比如专题是父亲节,那么就将关于父亲节的几个app归总起来进行展示。并且这个模块也支持下拉刷新和上拉加载更多。热榜展示下载量的排行榜,给用户一个直观的参考。搜索搜索功能在限免,降价,免费,热榜的用户界面上。当用户输入搜索的关键字时,用模糊效果遮挡背景界面,用户输入完关键字以后,发出网络请求,在另一个界面显示搜索的结果。设置用户可以对爱限免这款app进行一些设置,并且可以在设置中看到自己收藏的app。第五章 详细设计与实现根据需求分析,划分了七大功能模块,和两个程序封装模块:5.1 限免模块设计下图5-1为限免模块界面,在这个页面的导航栏上,有两个barButtonItem,两个barButtonItem分别绑定了事件,分别是进入分类界面和进入设置界面。在导航栏的下边是一个searchBar,在searchBar的下端是用UITableView显示限时免费的app。点击各个app对应的cell,就能进入到app的详细页面,查看app的详细信息。app的信息使用了UITableView来显示,UITableView具有cell的复用机制,其原理是将使用完的cell放入到队里中,再次使用时,首先从队里中去取cell对象。因为每次显示信息时,那么cell就将占满屏幕,这时候cell的数量是当前屏幕上cell的数量再加一,当滑动cell的时候,上端的cell就会从屏幕上消失,进入到复用队列中,从底部新出现的cell首先是从复用队列中去找是否具有可重用的队列,如果没有,那么就将新创建cell对象来显示信息。在app信息的显示上,使用了interface biulder来创建cell对象,interface biulder相当于是实例化的一个对象,每次我们从文件中读取这个对象。在cell上需要显示具体的限时免费的时间,时间需要将时间格式转化为时间戳。图5-1 限免视图以下是获得时间戳的代码:- (NSString *)getTimeWithString:(NSString *)expireDatetime NSDateFormatter *dateFormatter=NSDateFormatter allocinit; NSTimeZone *localZone = NSTimeZone localTimeZone; dateFormatter setTimeZone:localZone; dateFormatter setLocale:NSLocale allocinitWithLocaleIdentifier:zh_CN autorelease; dateFormatter setDateFormat:yyyy-MM-dd HH:mm:ss.0; NSDate *mDate=dateFormatter dateFromString:expireDatetime; NSDate *curDate=NSDate date; NSTimeInterval va=mDate timeIntervalSinceDate:curDate; NSDate *lastDate=NSDate dateWithTimeIntervalSince1970:va; NSString *str=lastDate description; NSArray *arr=str componentsSeparatedByString: ; NSString *lastStr=arr objectAtIndex:1; return lastStr retainautorelease;5.2降价模块设计如下图5-2为降价界面,降价界面的界面布局和限免界面是一样的,他们共同使用了一个类, 并且这个类还被免费和热榜界面使用,所以限免,降价,免费,热榜四个界面共同使用一个类来完成app信息的显示。所有的界面元素都是共有的,包括导航栏,导航栏上的barButtonItem, searchBar, UITableView等都是共同拥有的。在降价模块中没有了限时时间的显示,新显示的是降价后的价格。在cell上有每款app的星级评分,该星级的实现使用的是UIImageView的内容模式的设置。首先因为每个cell上都要有星级的显示,所有将星级单独作为一个类,在类中设置UIImageView的内容模式为左对齐模式,就能在调整UIImageView的情况下对图片对象进行裁剪。每次只需要给出实数型的星级数字,那么该类将自动生成具体的星级图片对象。在限免,降价,免费,热榜四个界面中,每个app都有自己对应的图片,下载这些图片使用了第三方库SDWebImage,这个第三方库具有异步下载图片的功能,并且将下载好的图片进行缓存,缓存的实现使用了数据库。对外接口是UIImageView的有名类别,使用非常方便。图5-2 降价视图以下是限免,降价,免费,热榜四个个模块在显示app信息时共用的cell的nib文件。如图5-3。图5-3 nib文件,显示信息的cell5.3 免费模块设计图5-4为免费界面,该界面的界面布局和限免,降价界面是一样,并且和前两个界面拥有共同的界面对象。在限免,降价,免费,热榜四个界面中,他们都具有下拉刷新的功能。下拉刷新使用第三方库EGORefreshTableView,每次将刷新的视图加在UITableView的上方,下拉时就能看见刷新视图,当下拉65像素时,就会触发刷新,这时在回调方法-(void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView*)view 中去下载最新的数据,下载完成后,清除以前的旧数据,然后刷新界面,显示最新的数据。加载等待视图使用的是MMProgressHUD。图5-4 免费视图以下是下拉刷新重新下载数据的代码:-(void)egoRefreshTableHeaderDidTriggerRefresh:(EGORefreshTableHeaderView *)view curPage=2; NSLog(refreshed); isRefresh=YES; NSString *str=NSString stringWithFormat:self.url,1retain; HttpManager sharedManageraddDownload:str type:CATEGORY_TYPE sortStyle:self.url; NSNotificationCenter defaultCenteraddObserver:self selector:selector(downloadFinished:) name:str object:nil; limitTableView.userInteractionEnabled=NO; str release; loadingV.alpha=1;5.4专题模块设计图5-5为专题界面,界面的最上端是导航栏,标题为专题,在导航栏的下端是UITableView,用来显示各个专题信息,每一个专题用一个cell来显示。Cell的最上端用UILabel显示专题的标题,使用一像素的UIView来制造分割线。由于专题中的app可以通过图片来点击来进入到app详情界面,所以图片必须能够响应点击事件,为了使图片能够响应点击事件,继承了UIImageView,在UIimageView中,设置userInteraction属性为YES,这样图片对象就能和用户交互,然后在UIImageView上加上点击事件,在图片被点击的时候,利用协议,将事件传递到具体的UIViewController中,进而对图片的点击时间进行处理。图5-5 专题界面以下是让图片能够响应点击事件的代码:协议代码protocolSubjectVCDelegate-(void)pushDetail:(NSString*)appid;end 给遵从协议的对象发送消息-(IBAction)cleckSub:(id)senderself.delegatepushDetail:self.applicationId; 5.5热榜模块设计图5-6为热榜界面,热榜界面的界面布局和限免,降价,免费界面是一样的,实现也是一样。只要要在UITableView的回调方法- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath中区分不同界面,然后给cell赋不同的值。就能显示不同的界面的信息。在限免,降价,免费,热榜四个界面中,都有上拉加载更多,实现的原理是在UITableView的最末端加上一个Cell,在上拉到最末端时,如果上拉距离超过了20像素,那么就会触发下载更过数据的方法,这时将会去请求下一页的数据,加入到现有的数据中。图5-6 热榜界面以下是检测到上拉加载更多的代码:-(void)scrollViewDidScroll:(UIScrollView *)scrollView if(self.type!=SEARCH_TYPE) refreshView egoRefreshScrollViewDidScroll:scrollView; if(scrollView.contentOffset.y(44+26+appAraay.count*100+44)-limitTableView.frame.size.height) isLoad=YES; else isLoad=NO; 5.6 搜索模块设计图5-7是搜索界面,在限免,降价,免费,热榜四个界面中都加入了searchBar,searchBar点击后的回调方法中设置一个模糊界面,然后按照关键字去搜索app的信息,每次搜索都是调用搜索的接口去服务器请求信息,在另外一个UINavigationController中显示服务器返回的搜索结果。图5-7 搜索界面以下是搜索部分的代码:- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar if(searchBar.showsCancelButton=NO) searchBar setShowsCancelButton:YES animated:YES; for(id bt in searchBar.subviews) if(bt isKindOfClass:UIButton class) bt setBackgroundImage:UIImage imageNamed:buttonbar_act

温馨提示

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

评论

0/150

提交评论