资源描述
基于iOS的一折抢购的APP的设计与实现
The Design and Implementation of Being Snapped
up Ten Percent APP Based on iOS
学院名称: 专业班级:
学生姓名:
学 号:
指导教师姓名:
指导教师职称:
毕业设计(论文)原创性声明和使用授权说明
作者签名: 日 期:
目 录
摘 要 I
Abstract: II
引 言 1
第1章 绪 论 2
1.1设计的目的和意义 2
1.1.1设计的目的 2
1.1.2设计的意义 2
1.2设计的方法和技术 3
1.2.1开发环境 3
1.2.2 Objective-C语言的简介 4
1.2.3 iOS系统简介 6
第2章 需求分析 7
2.1 系统设计流程以及思想流程 7
2.2可行性分析 7
2.2.1经济上可行性 7
2.2.2技术上可行性 7
2.2.3运行上可行性 8
2.2.4 社会可行性分析 8
2.3应用分析 8
2.4系统结构分析 8
第3章 系统设计 10
3.1系统设计目标概述 10
3.2系统功能结构 10
3.3软件的体系结构 11
3.3界面设计 12
第4章 详细设计与实现 13
4.1基类功能模块设计 13
4.2引导页 13
4.3新品模块 14
4.4超值界面 16
4.5逛逛界面 18
4.5详细界面 19
4.6第三方登录 20
第5章 系统测试 23
5.1测试的目的 23
5.2测试的准则 23
5.3测试的方法 23
5.4测试实例 24
结 论 29
致 谢 30
参考文献 31
基于iOS的一折抢购的APP的设计与实现
摘要:随着网络和智能手机的越来越深入的应用,在这个高速发展的时代智能手机不再只是用来打电话、发短信的工具,人们几乎无时无刻不在使用手机,并且随着现在消费者购物方式的改变,手机购物渐渐的引领的潮流,人们几乎每天都是通过手机来获取商品的更新,同时,伴随着苹果手机进入中国市场,相应的iOS技术逐渐流行起来。而对于开发苹果应用的语言——Object-C,也成为当今社会最流行的开发语言,并且保持着强劲的上升趋势,本软件界面美观,操作简单,是一个高效率的操作平台。
本一折抢购客户端是基于iOS平台开发,以OC语言为基础。本客户端的界面有:新品界面、超值界面、逛逛界面、明日预告界面、登录界面等等。其中各个界面分类详细,包含了:男装、母婴、数码、家居等等。尽可能的为购物者提供更多的便利。
本设计结合开发实例,详细介绍了基于iOS的一折抢购客户端的设计与实现过程,该软件底层采用OC开发,基于iOS平台运行,使用UIKit框架进行UI界面的开发,主要使用基于HTTP的网络模式,发送网络请求以后,获得服务器的响应并接收数据。在数据库上,本软件使用iOS系统集成的轻量级的数据库SQLite,实现清除缓存、浏览历史等功能。
关键词:iOS;APP;手机;购物
The Design and Implementation of Being Snapped up Ten Percent APP Based on iOS
Abstract: Along with the network and the smart phone is more and more in-depth and extensive application, mobile phone is no longer just used to make a phone call, send text messages in today's world of tools, people almost everywhere in the use of mobile phones, and with the change of the way consumers shopping now, mobile phone shopping gradually lead the trend of people is through the phone almost every day to get product updates, at the same time, along with the apple mobile phone to enter the Chinese market, the corresponding iOS technology gradually popular. For the development of apple application language - Object - C, in today's society has become the most popular development language, and maintained a strong upward trend, the software interface aesthetics, simple operation, is an efficient operating platform.
This ten percent for client is based on the iOS platform development, based on the OC language. The client interface are: new product interface, overflow, browse interface, tomorrow's forecast landing interface, interface and so on. Each interface detailed classification, include: menswear, maternal and infant, digital, household and so on. As far as possible to provide more convenience for shoppers.
Key words: iOS; Mobile phones; The APP; shopping
第1章 绪论
1.1 网页游戏行业概述
网页游戏,是指可以在本地电脑用浏览器就可以运行的游戏。目前用来编写网页游戏使用最热的是HTML5。随着计算机信息科技的发展,从HTML到现在的HTML5技术速度越来越快,功能也越来越强大。而现在的网页游戏也不是当初让全球所喜好的网页游戏“俄罗斯方块”、“贪吃蛇”、“超级玛丽”等画面朴素,规则简单的游戏,进而发展到了可以和掌上游戏机媲美,具有很强的娱乐性和交互性的复杂形态了。网页游戏作为运行在浏览器端的游戏,所以只要可以运行网页的设备都能进行游戏的操作,这一特征就决定了网页游戏的特点:首先具有庞大的用户群,只要有手机电脑等设备,只要会玩手机,会上网,会操作电脑就可以玩游戏,这特点导致六岁及以上的人群都可以玩网页游戏。现在科技越来越发达,导致硬件技术发展越来越好,手机,平板电脑,笔记本这些移动设备越来越便于携带。像手机,平板电脑体积小人们可以随身携带,只要可以上网随时随地都可以玩网页游戏而且需要的流量很少。深受广大网页游戏爱好者的追捧。据统计全球在使用的移动电话已经超过 15亿部,而且这个数字每天都在不断增加,计算机的数量也不断的增加,网民的数量也在在急剧的增加。这些都使得网页游戏潜在的市场越来越大,间接的推动网页游戏的快速发展。
为什么要开发HTML5网页版本的游戏。一是H5革新了手游模式,使得游戏渠道多元化:H5与其他游戏引擎最明显的区别就是,它可以与网页游戏一样联合运营。具体来说,H5游戏能够植入到丰富的场景应用中并与之完美匹配。这是最大的手游模式革新。此外,H5游戏让渠道越来越多元,只要有流量就是渠道,只要有浏览器就有游戏场景。(这里指的浏览器是一个广义范畴,比如手机、APP、微信等。)目前,猎豹浏览器已植入EGRET RUNTIME,其直接支持HTML5运行所需要的所有底层功能,使得运行在浏览器上的HTML5应用和游戏,拥有原生性能体验,并且实现即点即玩。
因此,对于拥有特别大规模富余流量的平台而言,植入优秀的引擎,就显得相当重要。随着渠道竞争的加剧,渠道必须拿到高品质的游戏。这个时候,H5带来了一个全新的机遇。H5有更多场景,比如开H5频道试玩,这还可以为渠道带量。对此,之前接受手游那点事专访的白鹭引擎张翔则认为,在手游的开发成本、营销成本居高不下的情况下,3D超重度游戏竞争非常惨烈。从市场定位和目标人群来看,H5游戏则为从业者换个思路去发展,开辟了一片新大陆。
二是 H5玩法多样,更加符合用户碎片化体验移动游戏的需求和习惯:H5 第一种玩法,是把H5作为营销工具、制作酷炫的营销页面,比如邀请函。第二种是游戏行业,利用H5试玩版帮原生版本引流。第三种才是比较纯粹的H5游戏。目前,猎豹浏览器上已经有数百款HTML5游戏,譬如《打飞机》、《斗地主》、《中国象棋》、《黑白块》、《围住神经猫》等等各类游戏产品。以其中的《打飞机》的实际体验为例,游戏的操作方式为划屏控制,简单又快捷;在攻击炮弹输出,爆炸特效,大技能效果等各方面表现不俗。点击“马上玩”在短短几秒就可跳转到游戏界面,接着便能开始长时间的娱乐体验,准入门槛极低。如前文所述,H5游戏拥有原生性能体验,即点即玩,加上游戏体验便捷,更加符合时下玩家的需求和习惯。
三是为游戏付费提供了多种盈利通道
现在越来越多CP在做有付费能力的游戏,在探索付费的可能性。因为CP难以盈利,这个行业就会停滞。还好现在的商业模式逐渐多元化,可能前期是广告为主,接下来,有可能会逐渐转为游戏内付费。比如《愚公移山》,随着迭代而不断设计游戏内付费点。作为引擎来说,可以通过为开发者提供其他的增值服务,比如云服务、大数据服务,统计服务、广告服务等,打通整个开发者盈利链条。尤其,对于H5这片新大陆来说。
四是.得以优化的H5游戏,更具机会开拓海外市场
海外H5游戏相对来说比较流行,用户对H5的接受度也非常高,但海外H5游戏生态还比较初级。比如,海外H5开发团队大多为两三个人或巨型公司,且开发出来的游戏还停留在钓鱼、消除类,画风也不够精致。反观国内,H5游戏已经跟原生非常接近。总的来说,在纷纷开拓海外市场的当下,国内H5游戏出海机会很大。
1.2设计的方法和技术
1.2.1开发环境
1.系统的软硬件平台
本一折抢购在性能上要求计算机能够支持苹果系统下的Xcode运行,同时支持FMDB(即数据库的封装)具体要求可以参照如下设置
(1)硬件运行环境
环 境
最 小 配 置
物 理 内 存
2 GB 以 上
虚 拟 内 存
RAM 大 小 的 两 倍
临 时 磁 盘 空 间
200 MB
硬 盘 空 间
50 GB
视 频 适 配 器
256 种 颜 色
处 理 器
1GHz 以 上
(2)Xcode开发工具
Xcode前身是继承自NeXT的Project Builder。
The Xcode suite 包含有GNU Compiler Collection自由软件(GCC、apple-darwin9-gcc-4.0.1 以及 apple-darwin9-gcc-4.2.1, 默认的是第一个),并支持 C语言、C++、Fortran、Objective-C、Objective-C++、Java、AppleScript、Python以及Ruby,还提供Cocoa、Carbon以及Java等编程模式。协力厂商更提供了 GNU Pascal,Free Pascal, Ada, C#, Perl, Haskell 和 D语言。Xcode套件使用 GDB作为其后台调试工具。
Xcode是开发人员建立基于iOS的应用最快捷的方式。Xcode是苹果公司向开发人员提供的集成开发环境。其运行于苹果公司的Mac操作系统下管你用C、C++、Objective-C或Java编写程序,在AppleScript里编写脚本,还是试图从另一个奇妙的工具中转移编码,你会发现 Xcode 编译速度极快,每次操作都很快速和轻松苹果公司为用户提供了全套免费的Cocoa程序开发工具。Mac OS X一起发行,在苹果公司官方的网站下载。
2.开发语言
Object-C是扩充C的面向对象编程语言。它主要使用于Mac OS X和GNUstep这两个使用OpenStep标准的系统,而在NeXTSTEP和OpenStep中它更是基本语言。Objective-C可以在gcc运作的系统写和编译,因为gcc含Objective-C的编译器。1980年代初布莱德·确斯在其公司Stepstone发明Objective-C。他对软件设计和编程里的真实可用度问题十分关心,目前主要是编写iOS操作系统应用程序的利器。近几年Objective-C排名大幅提升,它的流行当归功于iphone的成功,因为Objective-C一直被用于编写iPhone应用程序。Objective-C是非常实际的语言。它是一个用C写成、很小的运行库,只会令应用程序的大小增加很小,和大部分OO系统使用极大的VM执行时间会取代了整个系统的运作相反。Objective-C写成的程序通常不会比其原始码大很多。而其函式库亦和Smalltalk系统要使用极大的内存来开启一个窗口的情况相反。
1.2.2 Objective-C语言的简介
1980年Brad Cox发明OC,后来加入乔布斯的NEXTSTEP。1988年推出NEXTSTEP开发环境,1992年,乔布斯的NEXTSTEP将OC转让给GNU(自由软件基金会)。1996年OC成为MAC OC开发语言,2007年OC2.0。 2007年IOS1,每年一个版本,2014年iOS8。
OC语言是一种简单的面向对象的编程语言,它的面向对象特性参考了SmallTalk-80语言。跟C++是在同一时间段诞生的,没有借鉴C++。用于嵌入式开发,网络服务器端开发。支持C语言语法,是ANSI-C的超集,是一个高效的编程语言。OC语言支持C语言面向对象的扩展,支持完整的面向对象编程特性;简洁而优雅的编程风格使得编写程序与阅读代码都变得格外清晰;兼容性好,可以在同一个项目中同时使用OC与C++,也可以在项目中导入由C、C++等语言编写的库文件。
1.iOS的系统架构
iOS的系统架构和其操作系统一样,采用了分层的架构。iOS分为四层,分别为核心操作系统(the Core OS layer),核心服务层(the Core Services layer),媒体层(the Media layer),Cocoa触摸架构层(the Cocoa Touch layer)。
2.核心操作系统层和核心服务层
位于iOS系统架构最下面的一层是核心操作层,它包括内存管理,文件管理,电源管理以及一些其他的操作系统业务,它可以直接和硬件设备交互。核心操作系统层包括以下这些组件:OS X Kernel,Mach 3.0,BSD,Sockets,Power Mgmt,File System Keychain,Certificates,Security,Bonjour等。
开发人员也可以完全访问核心服务层来方问iOS的一些服务,包括数据库连接,URL学习等等,它主要包括以下这些组件:Collections,Address Book,Networking,File Access,SQLite,Core Location,Net Services,Threading,Preferences,URL Utilities等。
SQLite是嵌入式的和轻量级的数据库,广泛用于iOS应用。iOS系统内置SQLite数据库减小了开发人员的负担,是系统的一部分。
Net Servicer主要负责网络服务,在开发过程中,承担应用程序与服务器之间连接的角色,有很强的交互性。
媒体层,通过它可以在应用程序中使用各种媒体文件,进行音频与视频的录制,图形的绘制,以及制作基础的动画效果。它包括以下这些组件:Core Audio,OpenGL,Audo Mixing,Audio Recording,Video Playback,JPG,PBG,TIFF,PDF,Quartz,Core Animation,OpenGL ES。最上面一层是可触摸层,这一层为应用开发提供了各种有用的框架,并且大部分与用户界面有关,本质上来说它负责用户在iOS设备上的触摸交互操作。它包括以下这些组件:Multi-Touch Events,Core Motion,Camera,View Hierarchy,Localization,Alerts,Web Views,Image Picker,Multi-Touch Controls。
在Cocoa Touch层中的很多技术都是基于Objective-C语言的。Objective-C语言为iOS提供了相机集合,文件管理,网络操作等支持。例如UIKit框架,它为应用程序提供了各种可视化组件,窗口(window),视图(view)和按钮组件(UIButton)。Cocoa Touch层中的其他框架,对我们在应用程序中的开发来说也是非常有用的,如访问用户通信录功能框架,获取照片信息功能的框架,负责加速感应器和三维陀螺仪等硬件支持的框架等等。
3.应用程序框架
编写应用程序项目,都是从Cocoa Touch层开始的,具体来说是从UIKit Framework开始的。iOS常用的SDK框架如下:
AddressBook.framework 提供访问存储核心数据库中用户联系人信息的功能。
AddressBook.framework提供一个用户界面,用于显示存储在地址薄中的联系人详情。
AudioUnit.framework提供一个接口,让我们的应用程序可以对音频进行处理。
AudioToolbox.framework和AVFoundation.framework提供音频录制和回放的底层API,同时也负责管理音频硬件。
CFNetwork.framework访问和配置网络,像HTTP,FTP和Bonjour Services等。
CoreFoundation.framework提供抽象的常用数据类型,如Unicode、strings、XML、URL等。
CoreGraphics.framework提供2D绘制的基于C的API。
Foundation.framework提供Object-C的基础类(像NSObject)、基本数据类型和操作系统服务等。
GameKit.framework为游戏提供网络功能,点对点互联和游戏中的语音交流。
MapKit.framework为应用程序提供内嵌地图的接口。
MediaPlayer.framework提供视频播放和音频的功能。
MessageUI.framework提供视图控制接口用以处理E-mail和短信。
OpenGLES.framework提供简洁而高效的绘制2D和3D图形的OpenGL API。
QuartzCore.framework提供动画特效以及通过硬件进行渲染的能力。
StoreKit.framework为应用程序提供在程序运行中消费的支持。
SystemConfiguration.framework检测当前网络是否可用和硬件设备状态的能力
1.2.3 iOS系统简介
iOS主要用于iPhone 、iPod 、iPad 、iTouch 和 apple TV。
1976年,apple成立。Steve Wozniak(史提夫.沃兹尼克),Steve Jobs(史提夫.贾伯斯)创办。1980年OC问世。Objective-C(面向对象的C语言):难点:内存管理和设计模式(代理设计模式)。OC是IOS开发的基础课,是C语言的超集,C语言和OC是完全兼容的。
iOS有自己的生态系统,其生态系统不仅仅是指产品,更重要的是指iPhone/iPad/iPod/Mac +iCloud+App整个系统,包括Siri(部分设备不支持)、FaceTime、Safari、Game Center、地图、Passbook、电话、邮件。苹果所有移动设备都使用自己的OS,且不能更换电池,不能插内存卡,数据线连电脑后只能通过自家软件iTunes进行文件的传输,只能使用经过苹果认可的软件,且软件也只能从App Store下载,这就组成了一个封闭的生态圈。
第2章 需求分析
2.1 系统设计流程以及思想流程
经过对广大购物者的心理和对商品的需求的分析,本人对一折抢购客户端的设计过程是按照一般的应用开发流程进行的。首先自己参考购物客户端的设计模式,及模块划分,然后进行了社会调查人们对购物客户端的需求,获得用户需求。在有了用户的需求后,本人开始开发出了深受广大购物者喜欢的折扣抢购软件。在真正设计一折抢购客户端的过程中,本人先设计了一折抢购的整体框架结构,商品的数据来源,应用的图片出处等等这些开发必需的部分,同时抓取了淘宝的接口,可以实现第三方登录等等功能。
2.2可行性分析
系统的可行性分析是指在经济,技术及结构上都是可行的,本系统的可行性分析主要从以下三个方面进行分析的。可行性分析也可称为可行性研究,是在网上调查的基础上并辅助其他的信息渠道,针对基于iOS的购物的开发是否具备必要性和可能性。对一折抢购的开发从技术、操作、经济等不同方面进行分析研究,来保证投资的成功,保证新一折抢购的开发成功。就我们学的的知识知道可行性分析可以在最短的时间内分析出这款基于iOS的一折抢购是否可以达到预定的效果。
2.2.1经济上可行性
现在,苹果手机价格日益降低,并且引领了社会的潮流,在性能上依然有长足的进步。而本系统的开发为购物者的购物效率带来了一个质的飞跃,为此主要表现有以下几个方面:这款基于iOS的一折抢购的开发是通过苹果系统的Xcode来进行的。本人有一台黑苹果可用于开发,而且自己抓到了接口,所有开发所需要的硬件、软件均可以获得。自己也可以通过破解现有App store上的在线应用,来获取自己想要的资源。并且这个过程很是简单,不存在浪费人力物力的现象。所以得出开发一款基于iOS的一折抢购在经济方面是可行的。
2.2.2技术上可行性
开发基于iOS的一折抢购运用到的技术是Object-C,以及一些iOS开发的UI设计,某些类库的应用等等。就技术方面而言,自己学习iOS技术已经有四五个月的基础了,而且有过相关类似的开发经验,相对于开发一款购物应用类软件而言自己的技术是完全可以胜任的。而自己的Xcode完全可以胜任这次开发的需求。从而分析得出开发这款一折抢购的APP在技术方面是可行的。
综上所述,这个项目的设计与开发在技术上和硬件设备上的条件都是满足的,因此,它在技术上是可行的。
2.2.3运行上可行性
该项目为一个苹果手机的一折抢购客户端,在黑苹果电脑上可以使用苹果手机的虚拟机或者真机运行均可,因此,本设计在运行上是可行的。
2.2.4 社会可行性分析
开发这款一折抢购,本人不是为了盈利的目的不会损害到任何人的利益。本人开发这款一折抢购符合国家的方针政策,不影响任何组织的利益,没有宗教方面的宣传同时不会影响社会稳定。所以可以得出本人开发基于iOS的一折抢购见在社会方面是可行的。
2.3应用分析
需求分析指的是在建立一个新的应用的时,就这个新的应用的目的、范围、定义及功能这些方面所要做的工作。需求分析是完成一个应用必不可少的部分。在进行一款项目开发的过程中,开发者必须确定客户的需求,在确定了客户需求后才能进行应用的开发。
根据当前社会形势,苹果系统在中国已经成为主流手机之一,单单是iOS方面的购物行业也已经具备了相当的规模。市场上的购物app繁多,定位不一,基本满足了各层次消费者的需求。最新的调查显示比较大的购物市场,并不是很乐观。而简单,直观的购物却很受年轻人的青睐和欢迎。基于此,设计购物重点还是在于简单的外形和其最新的打折信息,新型的购物要有其他的附加功能,可以更好的吸引用户。
2.4系统结构分析
这个项目设计的是iPhone设备上的一折抢购客户端应用, 这个客户端的目的在于设计开发一款可以让用户在iPhone设备上轻松购物,并且为购物者节约了大量的时间,但所买商品也是相对来说质量较好的商品。与此同时, 通过丰富的界面交互动作、多种滑动手势的操作, 给用户流畅、方便又舒适的购物阅读体验。在软件主页面中,有新品、超值、逛逛、预告等模块,抓取了原APP的URL从而获取商品的及时更新。商品列表和商品详情以及更多等构成了软件最主要的视觉架构, 也是几个主要功能模块的入口。
一折抢购的功能模块如下:
1.新品模块
在新品模块中, 用户可以一目了然的看到其所包括的各个商品的列表表, 快速浏览并准所需要的商品的详细内容。并且可以双击击商品已查看商品的价格以及是否包邮和质保等各方面详细的信息,在正文页面本项目直接加载原APP的URL,简明的界面结构让用户可以快速上手使用本软件来进行购物和阅读操作。另外, 隐藏的多种手势操作可以为用户带来更高级且方便的操作体验, 流畅的交互动作也让软件体验上升一个档次。
2.详情模块
用户可以通过点击首页某一条商品的信息,进入详细的商品介绍,这些详细的内容是直接连接到淘宝的商品,保证了信息的真实性,把不必要的冗余的裁掉,方便了用户的使用,还有在最底部有返回和分享,但是为了方便用户观看,再向上滑动时,那个返回和分享是看不到的,只有你不滑动了才会出现。
3.分享模块
利用第三方基层平台友盟可以使本软件用户点击分享按钮,可以分享到人人,新浪微博界面,提高用户体验,增强用户购物的趣味。
4.登录模块
通过友盟第三方登录sdk实现了淘宝账号的第三方登录。
5.推送模块
在以前是没有推送的,但是人们不可能时刻关注够购物的动态,所以才有了推送,在新的打折信息到达时,会给用户提示,并且展示推送内容的标题,这样人们可以在最短的时间内知道最新的商品打折信息,方便用户使用,同时,用户可以根据推送的标题去直接点击查看详细内容。
第3章 系统设计
3.1系统设计目标概述
本设计的业务总体目标是设计一个与时更新、浏览清晰、安全、购物方便的能被购物者认可的全新的一折抢购客户端。该设计基于MVC结构,多个控制器设置和数据模型的设计。这个购物客户端从各个方面为购物者提供了较详细的商品介绍以及相关折扣信息,从而为购物者节约时间与金钱。
3.2系统功能结构
本软件的设计主要根据用户的需求分析进行设计,主要是为购物者服务的,消费者是本软件的主要用户,用户也可以注册或者直接登录本软件后才能进行相应的操作。本设计我只负责客户端的设计与实现,因此本论文是围绕这两个方面阐述的。一折抢购客户端的主要设计模板有:新品模块、超值模块、逛逛模块、明日预告模块、登录模块等组成的,如图3-1所示:
应用页面
新品模块
能模块管理
超值模块
限管理
逛逛模块
明日预告
登录模块
商品详情页面
图3-1功能模块
新品模块功能:
全部
数码
女装
男装
母婴
家居
新品
图3-2新品功能模块
说明:由于这几个界面布局相似,就设计了一个父类控制器FatherViewController,剩下几个都是继承这个父类控制器。所以在这里只介绍新品模块的详细信息,新品功能模块有全部、数码、女装、男装、母婴、家居等等一目了然的分类,可以让购物者根据自己的需求选取相关的商品信息。
3.3软件的体系结构
本软件是典型的iOS移动应用客户端, 采用建立在iOS系统之上的Cocoa Touch 应用程序架构。本软件遵循MVC架构原则, 即数据( 模型, Modle ) 、视图(View) 和控制器(Controller) 分为各自独立的三层, 三层各自有自己的任务。
数据层即模型层中主要封装了数据库有关和存储文档的数据类型。本软件主要数据来源于WebServiceAPI , 数据层中存储了所有新闻数据列表的信息、图片列表信息, 新闻正文内容以JSON 文件形式保存于应用程序沙盒的缓存空间里, 图片内容以图片二进制形式保存于应用程序的缓存空间里。
控制器层中包括引擎层和逻辑层。正文排版封装了为新闻正文数据排版的方法对正文信息的JSON 文件进行解析和处理, 重新拼装出最终的正文HTML 代码。需要预先计算所有视图框架的高度以及字符排版等特殊处理, 为视图层展示做准备。逻辑层主要负责应用逻辑部分, 包括数据调用逻辑、数据与视图关系的逻辑等等。逻辑层在代码上主要表现为各个视图控制器( UIViewController ) , 设置了整个应用各个视图之间如何切换, 数据关系如何协调等, 是衔接视图层和数据层最重要的部分。其中在本次设计中我使用了继承的方法来简化代码。
视图层主要基于UIKit框架的重写, 是对UIView、UIController、UITableViewCell等基类view的封装, 构成了应用中所有的视图控件。UIKit 提供了iOS视图层中的各个类, 对各种基本控件进行组装和排版, 并封装一部分界面逻辑代码, 构成应用需要的特定的视图控件, 如新闻主列表单元格、在用户体验至关重要的移动应用中, 为了让视觉效果更加华丽, 大部分视觉控件设置了相应的视觉图片, 如各种控件按钮、背景图片和部分视觉元素等。
3.3界面设计
界面设计是软件具有良好的易用性的一个重要因素,基于本软件的应用范围考虑,本系统的界面设计主要从两个方面去考虑:一是功能,二是风格。
目前iOS界面设计的方法主要有两种:
1.是移动Web UI。
2.是移动客户端UI。
对于设计而言,移动Web满足人们高效快速的信息浏览,注重排版和信息整合; 而客户端可以实现更加丰富的交互体验,注重层级关系和操作引导。受“ 屏幕小、触屏操作、网速限制” 的限制,Web的设计需要考虑诸如:精简布局、降低图片加载、减少输入等等。具体办法可以这么做:
1.对原有信息进行整合重组,横向排列、避免分栏。
2.动作传感器可以感应用户横握手机时自动转为横屏显示,因此信息排版要做到自适应宽度。
3.以精简为主。在小小的显示屏上,所有主元素都要尽量的“够大”,因此页面只需展示核心功能,去掉不必要的”设计元素”(使用色块或简单背景图),使页面易操作、浏览顺畅。
第4章 详细设计与实现
本章主要阐述了新闻模块、应用模块、专题模块和壁纸模块以及更多模块五个关键技术模块的详细技术实现方法, 对各模块主要功能的技术点和实现方法进行了详细的介绍。通过逻辑流程图、类图和实际效果截图来更加清晰的讲述各部分的技术内容和主要的UI设计,并提供了部分典型功能的实现代码。
4.1基类功能模块设计
在基类功能模块中,主要实现了各模块所用到的一些协议类以及若干视图控制器类,但并不是真正的实现了视图控制器类,主要是视图控制器方法的封装,供各个实体控制器调用。
1.DownLoad类
该类继承于视图控制器NSObject类 , 是软件中建立数据连接的网络请求类, 不包含任何关于视图逻辑的代码。该类封装了调用NSURLConnection的常规方法, 供各实体控制器使用。
2.DownLoadManager类
该类也是继承于NSobject类,是对网络请求类的二次封装,主要用途是封装数据的反向传值所需要的方法,也是一层协议。供各个实体控制器调用。
3.MyNavigationBar类以及MyTabbar类
这两个类均继承于NSObject类,是软件中各视图控制器的基类,但并不是真正的视图控制器实体, 也不包含任何关于视图逻辑的代码。该类封装了调用的常规方法, 供各实体控制器调用。主要是实现各实体控制器UI方面的实现。
4.2引导页
当本程序第一次运行时NSUserDefaults中的标志位还没有,所以会进入引导界面,方便用户更加清晰的了解其应用的功能以及改动信息,但以后再次运行该程序是NSUserDefaults已经有了该标志位,所以不会进入该引导界面。
引导页如图4-1所示:
图4-1引导页
引导页的主要代码:
// NSUserDefaults中读取第一次加载程序的标志位
NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
NSString * friLoad = [defaults objectForKey:@"Frist"];//标志位
if (friLoad.length == 0) {
[self createFirstLoadView];
}
return YES;
}
UIImageView * imgView = [[UIImageView alloc] initWithFrame:CGRectMake(320*i, 0, 320, 480)];//创建图片视图
imgView.image= [UIImage imageNamed:[NSString stringWithFormat:@"help%d.png",i+1]];
[s addSubview:imgView];
4.3新品模块
新品功能模块有全部、数码、女装、男装、母婴、家居等等一目了然的分类,可以让购物者根据自己的需求选取相关的商品信息。由于这几个界面布局相似,就设计了一个父类控制器FatherViewController,剩下几个都是继承这个父类控制器,但是这几个控制器界面又有些不同,通过重写父类的某些方法,重新调用,最终把界面上需要修改和去掉的东西完善,大体界面就搭建成功了,因此在此只详细介绍新品功能模块。
新品模块功能如图所示:
全部
数码
女装
男装
母婴
家居
新品
图4-2新品功能显示
新品模块如图4-3所示:
图4-3新品功能显示
新品模块功能的实现代码如下:
- (void)createdNavRightItem{
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];//创建按钮
btn.frame = CGRectMake(0, 0, 55, 40);
[btn setBackgroundImage:[UIImage imageNamed:@"btn_user"] forState:UIControlStateNormal];
[btn addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *item = [[UIBarButtonItem alloc]initWithCustomView:btn];
self.navigationItem
展开阅读全文