基于iOS系统的好生活手机APP设计.docx
《基于iOS系统的好生活手机APP设计.docx》由会员分享,可在线阅读,更多相关《基于iOS系统的好生活手机APP设计.docx(19页珍藏版)》请在冰豆网上搜索。
![基于iOS系统的好生活手机APP设计.docx](https://file1.bdocx.com/fileroot1/2022-12/7/0401b111-f91e-4668-b1c3-2085ae0c870b/0401b111-f91e-4668-b1c3-2085ae0c870b1.gif)
基于iOS系统的好生活手机APP设计
毕业论文(设计)
课题基于IOS平台好生活APP的设计与开发
学生姓名
院部电气工程学院
专业班级
指导教师
二○一六年六月
3.2MVC设计模式-5-
基于iOS系统的好生活手机APP设计
摘要
随着智能手机的不断更新和发展,逐渐替代了传统的手机,而人们对智能手机的应用的需求也越来越广泛,已经不在是以前打电话、发短信的简单要求,手机游戏、手机导航、手机购物等应用已经非常流行了。
同时,伴随着iPhone进入中国市场,Objective-C和Swift逐渐成为开发者最常用的语言,本设计利用苹果提供的语言进行苹果手机Application的开发,该软件是公司向员工发放福利,利用福利点数进行购物的一款app,它具有界面美观,操作简单,实用性广的优点。
本论文设计的实现,关键的开发程序是用MVC设计模式、代理模式以及单利模式的设计。
对于此设计中各个界面的设计和布局,是解析相应的网络请求数据并用不同的控件展示的,而面对不同版本的iPhone,可以利用代码或者官方提供的Autolayout设置约束和Sizeclass设置屏幕尺寸等对其进行适配。
本设计利用自定义可以左右滑动的tabbar,将不同页面放置到tabbar上面,实现系统不能左右滑动的效果,不同页面的展示通过自定义的单元格显示在UITableView上。
本设计中的网络请求都遵循Http协议,网络请求的实现是利用第三方的类库AFNetworking,通过创建AFNetworking中类的对象,向服务器发送异步请求,请求解析得到的数据,将数据展示在页面上。
本文设计的app应用非常广泛,给人们的日常生活带来了便利,通过对本设计的开发,实现了许多app共有的功能,加深对项目开发的理解和认识。
关键字:
iOS;Objective-C;好生活App;iphone
GoodlifebasedoniOSmobileAPPdesign
Abstract
alongwiththecontinuousrenewalofsmartphonesandthedevelopment,graduallyreplacedtheoldmobilephone,andpeople'sdemandfortheapplicationofsmartphonesisbecomingmoreandmorewidely,isnolongersimplerequirementsbeforemakingphonecalls,textmessaging,mobilegames,mobilephonesnavigation,shoppingandsoonapplicationshasbeenverypopular.
Atthesametime,alongwiththeiPhonetoentertheChinesemarket,Objective-CandSwiftgraduallybecomeoneofthemostcommonlanguageofdevelopers,thisdesignlanguagefromapplefortheapplemobilephoneApplicationdevelopment,thesoftwareistogivebenefitstoemployees,thecompanytheuseofwelfarepointsforshoppingapp,ithasbeautifulinterface,easyoperation,theadvantagesofwidepracticability.ThispaperdesigntheimplementationofthekeydevelopmentprogramistousetheMVCdesignpattern,thepatterndesignoftheproxypatternandsimpleinterest.Forthedesignoftheinterfacedesignandlayout,toparsethecorrespondingnetworkrequestdatausingdifferentcontrolsdisplay,withadifferentversionoftheiPhone,canusethecodeorofficialAutolayoutsetconstraintsandSizeclassSettingsscreensizetofit.ThisdesignUSESthecustomcanslidearoundtabbar,placedifferentpagestotabbar,implementsystemcannotcontroltheeffectofthesliding,differentpagesshowsthroughcustomcelldisplayontheUITableView.NetworkrequestsarefollowedinthedesignoftheHttpprotocol,therealizationofthenetworkrequestistousethird-partylibrariesAFNetworking,bycreatingaclassofobjectinAFNetworking,sendanasynchronousrequesttotheserver,therequestparsethedata,thedatadisplayonthepage.
Thispaperdesignedanappisverybroad,bringsconveniencetoPeople'sDailylife,throughthedevelopmentofthisdesign,torealizethefunction,commontomostapptodeepentheunderstandingofprojectdevelopmentandknow.
keyword:
iOS;Objective-C;GoodLifeApp;iphone
第1章绪论
1.1选题背景
随着社会的发展,时代的进步,智能手机为人们的生活带来了许多的便利之处,而传统的键盘式手机逐渐被智能手机所取代,智能手机像个人电脑一样,它拥有的操作系统是单独的,拥有的运行空间同样是单独的,因为它可以自定义的安装第三方软件,所以智能手机相对与老式手机来说有着强大的扩展功能,用户可以自行的安装或卸载其需要的app。
随着智能手机越来越广泛的使用,用户越发依赖手机软件,而网络购物也越来越流行,因此像购物类的这种app的市场需求和发展前景也越来越焕发。
好生活app充分利用市场的需求,将手机app和网络购物合为一体,让人们更加方便的利用手机进行购物,手机购物也成为了人们主要购买商品的途径之一,有了好生活这款app就不需要去实体店铺,也不用坐在电脑前,一部手机就能完成在电脑上想要完成的操作,中国的未来的手机购物将有一个快速的发展期,用户可以通过手机查询商品信息并在线支付购买商品。
相关的数据调查说明了,大约46.00%的手机玩家以前有过用手机进行购物,21.50%的手机玩家声明想要尝试在手机上进行购买商品,此调查显示手机购物在我国拥有十分广阔的前景。
随着苹果手机在中国的日益发展,iOS一系列的技术也越来越被开发者应用,所以编写iOS操作系统应用程序和MacOSX操作系统应用程序的Objective-C语言也被开发者熟知及应用。
OC语言是C语言的一个超集,在C语言的基础上加了面向对象的特性,OC与Java语言相同,都是单继承,这一点与C++语言不同,OC不支持命名空间机制,取而代之的是在类名之前添加前缀,以此来区分,Objective-C是动态定型,所以它的类库比C++要容易操作,OC语言在运行的时侯能够允许通过字符串名字来对方法和类进行交互,并且能够动态连接和添加类,这就是OC语言的多态特性。
综上所述,Objective-C有着非常巨大的空间进行发展。
iOS里面只支持MAC和ARC的开发,ARC是AutomaticReferenceCounting的简称,我们也可叫它自动引用计数,是在iOS5.0之后推出的内存管理的新特性。
本质上还是使用引用计数来管理对象,只是程序在编译时,会在合适的地方添加release或者autorelease,不需要手动向对象发送release或者autorelease方法,ARC比GC性能好。
1.2研究的意义
手机购物在当今社会已是非常普遍了,大多数人都已了解并熟练的利用手机在网上进行购物了,此款app是利用公司给员工发放的点数进行购买商品的,和Q币的功能类似,用户可以利用点数换取其想要获得的商品或其他种类的消费。
本人从去年开始接触OC语言,在经过一段时间的学习后,对iOS的开发有一定的了解和认识,此项目便是在公司实习期间所接触到的,项目具有一定的复杂性,用到了不同的设计模式和第三方的类库,通过对项目的开发,巩固了自己iOS水平和独立解决问题的能力。
第2章总体开发环境
2.1开发环境与开发工具
2.1.1Objective-C语言概述
Objective-C是对C语言的扩充,而且在此基础上增加了面向对象,它是由BradCox在1980年代初发明的,大部分是用在与MacOSX和GNUstep这两个使用OpenStep标准的系统,不过在NeXTSTEP和OpenStep中它是更基本的语言,Objective-C不仅可以在上述的系统中使用,而且能够在其它的系统上进行编写和编译,例如:
GCC、Clang等。
目前,Objective-C的主要用途则是编写iOS操作系统应用程序和MacOSX操作系统应用程序,所以说它是一种实用的开发语言。
Objective-C具有单继承的语言特点,不能进行多重继承,cocoa中NSObject是所有类的父类,多重继承虽然不能在此实现,不过可以用protocl委托代理来进行实现,面向对象语言大部分都是单继承的,如java等。
OC语言在C的基础之上多了其自己的特性,即封装、多态、继承,OC语言不支持命名空间机制,不过它要在类名之前添加上前缀,来区分不同的类之间的不同,不支持运算符重载,而它支持C语言、OC与C++可以混编。
和其他的所有面向对象语言类似,Objective-C也是用类来封装数据,对数据进行一系列的操作,对象就是类的实例化,它包含了类声明的实例变量将自己的内存地址复制,以及类成员的指针,NSObject是顶级父类,即所有的类都是NSObject的字类。
OC中的类可以声明两种类型的方法,即加号方法(类方法)和减号方法(实例方法),加号方法是由类进行调用的,而减号方法不同,必须创建类的对象,由对象调用减号方法,这两种类型的方法都可携带参数和返回值,方法的声明格式是:
-或+(返回值类型)方法名:
(参数类型)参数名。
如果方法中无参数,可以省略方法名后的冒号。
2.1.2Xcode开发工具
Xcode是一款用来编程的软件,是由苹果公司独立开发的,它向开发人员提供了需要开发所涉及的环境,它提供了项目管理、代码编辑、编译可执行文件、源代码调试、代码库管理和性能优化等的工具,Xcode不是唯一使用的开发工具,目前开发所用到的是Xcode6.3版本。
首先要关注的是Xcode应用程序,它提供了开发iPhone应用项目的全部代码的建立和使用、编译代码为可执行文件、运行调试OC或者swift代码,还包括在iPhone模拟器上运行或者是直接在设备上运行等。
开发者可以在Xcode中创建新项目,开始新的iPhone应用程序。
一个项目控制着应用程序全部的信息,包含源代码、编译设置和把所有文件整合到一起的编译规则。
Xcode项目的中心思想就是是项目的各个不同的窗口,开发者可以通过该窗口迅速的找到应用程序的全部有用的元素。
组和文件列表管理项目文件,包含了源代码文件和编译结束的目标文件。
工具栏提供了常用的工具和命令,详细资料面板用来设置项目的工作区域,项目窗口的其他部分可以提供更多的项目信息。
Xcode中有一些常用快捷键,方便开发者对程序进行操作,如command+r:
程序运行command+b:
程序编译command+c:
复制command+v:
粘贴command+方向键:
光标快速移动command+shift+k:
清理等。
2.1.3开发环境
(1)开发环境
MacOSXVersion10.9.2
(2)运行环境
iPhone模拟器或者真机调试
2.2内存管理
从iOS5.0之后,苹果官方推出了ARC技术,即是内存管理的新特性,ARC是AutomaticReferenceCounting的简称,自动引用计数,在此之前,苹果一直用的是MRC管理内存,即手动管理引用计数,遵循“谁创建,谁释放,谁引用,谁管理”的规则,当创建对象时,我们会调用alloc或new方法,或者向对象发送copy,retian消息时,会使对象的引用计数加一,我们就有义务向它发送release或者autorelease消息,使其引用计数减一,当对象的引用计数为零时,系统就会自动释放该对象。
ARC则不需要我们手动的向对象发送release或者autorelease消息,它是编译时特性,即程序在编译的时候会在合适的地方为我们自动添加release或者autorelease,本质上还是用引用计数来管理内存,ARC使代码简洁,防止内存泄漏,提高零效率。
第3章IOS技术与app功能框架
3.1不同版本iphone适配分析
在实际开发的过程中,首先遇到的问题就是屏幕适配,可以说做好屏幕适配是开发的基础,提到适配,第一要了解的就是不同版本iphone的屏幕大小,如图3-1所示:
图3-1不同版本iphone的分辨率
我们根据屏幕的不同及分辨率的不同对iphone进行适配。
苹果官方非常重视适配问题,适配是开发程序的基本条件,官方推荐采用autolayout添加约束和sizeclass调节屏幕尺寸对屏幕进行适配,即是抛弃以前的用坐标写死视图的位置和大小,只是对控件间的相对距离进行约束,让控件自动适配屏幕。
下面用一个简单易懂的例子来说明autolayout的部分使用技巧和方法,等宽子视图的布局,所谓等宽子视图,说的简单了也就是对一个有多个子视图的父视图来说,不管父视图的宽度是如何的变化,所有子视图的宽度都是相等的,如图3-2所示:
图3-2适配效果图
分析一下这种情况的视图约束的规则,4个不同颜色的子视图具有相同的宽度,子视图之间的距离固定为10,最左边和最右边距屏幕边缘的距离为10,子视图的高度随着屏幕的比例进行变大或变小,接下来就是将图中的约束全部实现,其中最关键的约束是等宽约束,子试图之间的固定距离的约束。
对于所有的约束条件如图3-3所示;
图3-3autolaryout约束条件
在实际的开发过程中,会遇到各种各样的屏幕适配,这就需要我们对aotolayout非常了解,对约束条件非常清晰,autolayout的出现让苹果适配问题变得简单,不在需要纯代码适配,给发开者节省了时间,增加了效率,从图中可以看出各个约束的效果和不同。
3.2MVC设计模式
MVC是一种架构设计,M表示数据模型(model),V表示视图(view),C表示控制器(controller)。
数据模型:
负责存储、定义、操作数据,例如,模型对象可能是表示展示视图中的一条数据,用户在视图层中所进行的创建或者修改数据的操作,通过控制器对象传达出去。
模型对象在改变的时侯,就会通知试图控制器的对象,控制器对象发送相应的消息来更新我们需要改变的试图对象。
视图是用来展示数据给用户,和用户进行操作交互,视图通过显示的形式,把信息转达给用户。
不同视图显示着不同的内容,表达了模型的数据变化和状态变化的消息。
每个视图对象都会有一个更新的作用,它可被变化-传播机制所激活。
当让试图对象更新时,视图获取到模型带来的数据值,并用这些数据来更新显示出来。
控制器是M与V的协调者,控制器获取数据,将数据交给视图去展示。
MVC的优点表现在以下几个方面:
(1)能够将一个模型在运行时一起创建和利用许多个不同的视图。
变化-传播机制能够保证一切有关的视图很迅速的得到模型数据变化,然后将全部关联的视图和控制器之间行为和数据同步。
(2)视图与控制器的可接插性,可以变换视图和控制器不同的对象,而且可以根据不同的要求多态的打开或关闭,有时候还可以在运行的中间进行对象替换更新。
(3)模型的可移植性。
因为模型和试图是相对独立的,所以能够将一个模型单独地放到其它的平台进行工作。
不过要做的是在新平台上对视图和控制器进行新的修改。
3.3好生活的功能框架
3.3.1引导页
引导页向用户展示了好生活公司的一些图片,让员工对好生活公司有更深的了解,让员工对此app一目了然,好生活是企业给员工的福利,让员工喜欢上此app。
主要功能框架如图3-4所示:
图3-4功能框架
3.3.2登陆界面
通过点击引导页的最后一个图片进入到登陆界面,在此界面用户可以输入用户名和密码进行登陆,当密码忘记时可以点击找回密码进行找回操作,也可注册用户,本界面和QQ的登陆界面具有类似功能。
3.3.3首页
用户登陆成功,会跳到此界面,用户在此界面能看到一些展示的不同种类的商品,具体包括广告、分类、福利几个模块。
广告主要是展示一些广告图片,减价商品,最新商品等,可以自动滑动,用户也可手动滑动,通过点击不同的图片可以跳转到下一个界面,下一界面是对此图片的详细信息的描述。
在广告下面紧接着就是分类模块,在此模块中主要有八种不同的分类,运动健身、文艺欣赏、健康体检、休假疗养、集中采购、业余培训、户外运动、生日慰问。
通过点击不同的分类,找到用户需要的种类和商品,这种设计是非常具有人性化的,可以根据不同的用户展示不同的数据。
福利模块分为最新和最热两部分,但是不同的两部分都是以同一种格式显示的,向用户展示了商品图片,商品名称,商品价格和商品购买的数量,通过展示的部分,让用户胸有成竹,一目了然。
3.3.4个人界面
该页面是个人信息界面,在此页面中可以看到用户名、真实姓名、头像、我的订单、福利账单、用户地址、密码管理等功能。
通过点击个人信息可以设置头像,头像可以根据相册选择,也可拍照上传,我的订单就是历史订单,可以看到以前购买商品的历史,密码管理能够实现更改密码的功能,跟平常所见到的更改密码功能一致,意见反馈就是提交自己的意见,给公司提供建议的功能。
最新消息可以查看消息,点击这个按钮是通过加载网页的形势展示数据的。
3.3.5设置界面
设置界面相对其他的界面就显得比较简单了,该界面可以检查更新,退出登陆以及设置在2G/3G/4G下能否显示图片的功能,点击此按钮,可以控制是否加载图片,该功能是对于用流量的用户量身定做的,通过此按钮的开关,控制流量的多少,非常人性化的设计。
退出登陆按钮就是退出登陆,回到登陆界面,通这个按钮可以切换不同的用户。
第4章好生活客户端设计与实现
4.1项目概述
项目名称:
好生活app
项目需求:
通过手机客户端实现网上在线购物的功能,可以在手机上进行物品的选择、浏览、支付等操作。
项目优化:
加强用户体验,不同屏幕手机进行适配,使外观整体,减少资源的消耗,防止内存泄漏,加强内存的管理,滚动视图滚动显示更加流畅、清晰、自然。
4.2好生活详细设计
4.2.1引导页界面
引导页是放置不同的图片到UISsrollView上面,滑动到最后一张图片,通过touch事件处理,跳转到登陆页面,其中主要代码为:
_scrollView=[[UIScrollViewalloc]initWithFrame:
[UIScreenmainScreen].bounds];
for(inti=0;i<4;i++)
{
LaunchImageView*imageView=[[LaunchImageViewalloc]initWithFrame:
CGRectMake(VIEWWIDTH*i,0,VIEWWIDTH,VIEWHEIGHT)];
imageView.image=[UIImageimageNamed:
[NSStringstringWithFormat:
@"1-%d.jpg",i+1]];
imageView.tag=i+1;
imageView.delegate=self;
[_scrollViewaddSubview:
imageView]
}
_scrollView.contentSize=CGSizeMake(VIEWWIDTH*4,0);
_scrollView.showsHorizontalScrollIndicator=NO;
_scrollView.pagingEnabled=YES;
_scrollView.bounces=NO;
[self.viewaddSubview:
_scrollView];
引导页图如图4-1所示:
图4-1引导页图
4.2.2登陆页面
该界面的登陆图如图4-2所示,登陆页面则是由最基本的一些控件组成的,其中分别有UITextField,UIButton,UILabel等控件,通过获取UITextField上的用户名和密码,在UIButton的点击事件里面进行一系列的判断和发送网络请求,通过AFNetworking这个第三方的库,向服务器发送请求,并得到服务器返回的数据,将数据进行解析,判断是否登陆成功。
如果登录成功就会跳转到下一个界面,反之,会弹出一个警告框告诉用户登录失败的原因。
此界面是很容易实现的,复杂的部分主要是对返回数据的解析和判断,下面是对登陆判断的主要代码:
[self.viewendEditing:
YES];
NSString*nameString=[_tfUserName.textstringByReplacingOccurrencesOfString:
@""withString:
@""];
NSString*pwdString=[_tfUserPwd.textstringByReplacingOccurrencesOfString:
@""withString:
@""];
if(nameString==nil||nameString.length<6||pwdString==nil||pwdString.length==0){
NSLog(@"请填写正确的用户名或密码");
}else
{
[sendersetTitle:
@"登录中..."forState:
UIControlStateNormal];
[[HttpEngineshareHttpEngine]loginWi