




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于IOS的易车新闻客户端的设计与实现毕业论文目 录摘要IAbstractII引 言1第1章 课题概论21.1 论文背景21.2 易车App概述2第2章 软件的设计42.1 总体设计42.2 详细设计42.2.1 设计的目的42.2.2 可行性分析42.2.3 需求分析52.2.4 方法和技术5第3章 软件的实现83.1 硬件结构规划与设计83.2功能模块概括83.3 软件功能架构113.4 软件的体系结构11第4章 详细设计与实现134.1 引导界面134.2 头条界面144.3 车友界面174.4 选车界面184.5 登录界面214.6 推送功能23第5章 系统测试255.1 测试目的255.2 测试方法25结 论28致 谢29参考文献30基于IOS的易车App的设计与实现摘要:随着智能手机越来越深入而广泛的应用,当今时代手机不再只是用来打电话、发短信的工具,反而对手机的娱乐等功能要求越来越高,人们早已离开电视,抛弃PC,开始使用移动App浏览新闻,于是基于iOS的易车客户端应运而生。本易车客户端是基于iOS平台开发,以OC语言为基础。集成了5个汽车新闻客户端中常见的界面:头条界面、车友界面、选车界面、活动界面、登陆界面。其中选车界面多样化,包含了:多种条件选车、汽车的详细配置等功能,尽可能的为用户的购买汽车、浏览汽车资讯提供更多的便利。本文结合开发实例,详细介绍说明了基于iOS的易车客户端的设计与实现过程,该软件底层采用OC开发,基于iOS平台运行,使用UIKit框架进行UI界面的开发,在网络传输方面,主要使用基于HTTP的网络模式,发送网络请求以后,获得服务器的响应并接收数据。在数据交换方面,采用JSON格式从服务器获取信息,然后处理JSON字符串,就能获得想要的数据。在数据库上,本软件使用iOS系统集成的轻量级的嵌入式数据库NSUserdefault,实现前台后台数据的交互操作。该App的功能实现需要用到MVC架构模式,遵循了程序的低耦合性的思想,MVC是一个框架模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。关键字:iOS移动应用;易车新闻客户端;JSON;IDesign and implementation of iOSbased onAppAbstract: With theapplication of intelligentmobile phoneis more andmore deeply and widelyin todays era,mobile phoneis no longerused to call,send text messages,butthe entertainment functionofmobile phonehave become increasingly demanding,peopleare almost allthrough themobile phoneto getthe worldnews,andbased on the iOSclientYiCheemerge as the times require.This car is client based on iOS platform based on OC language. Intergated interface of 5 common clientinterface:Automotive News, headlines, choose a car, activity,land.Thecarincludes:interfacediversification,withthe configuration function ofa variety of conditionsto choose a car,car.As much as possible for users tobrowse,buy a carcar informationto provide more convenience.In this paper,combined with the development ofexamples,detailed description ofthe design and implementation ofiOSclient based onBITAUTO,theunderlying softwaredeveloped by OC,iOSplatformbased onUIinterfacedevelopment,using the UIKit framework,in the network transmission,the main use ofthe networkmodel based on HTTPnetwork,then sends therequest,geta response from the serverand receive data.In the exchange ofdata,using JSON formatto obtain information from theserver,and thenprocessingthe JSON string,you can getthe desired data.In the database,thesoftware uses the iOSsystemintegratedlightweightembedded database NSUserdefault,realize theinteractive operationForegroundBackground data.Need to use the MVC architecture pattern to realize the function of the app, follow the idea of program of low coupling, MVC is a frame model, it is mandatory to enable the application of input, processing and output separately.The use of MVC applications is divided into three core components: model, view, controller.They each deal with their own tasks.Keyword:iOS mobile application;YiChenews client;JSONII15引 言新闻客户端是软件产品的传统品种,近年来的发展呈现良好态势。随着网络时代的到来手机已具备支持各种各样的资讯软件的条件。目前,我国的新闻类资讯软件公司通过早年的原始积累,已将市场逐渐放大,做大,他们依靠新闻的及时性,权威性牢牢地掌握住了市场的主动权,并且在世界的新闻资讯行业中也有一席地位。目前中国新闻资讯类App已经具备了相当的规模,并在国际市场上已有一定的竞争力。苹果手机作为当今中国智能手机市场上不可或缺的一个品牌,基于iOS的手机软件需求量也就相应的越来越强。市场上的新闻资讯类软件品种众多,定位不一,但在汽车咨询方面去还没有很完善,鉴于此一些公司抓住了机遇例如:易车,汽车之家等等这些大家所熟知的汽车资讯类软件已经在苹果软件中占据了一定的地位,同时智能手机的普及使得移动信息平台成为了主流。第1章 课题概论1.1 论文背景随着社会的发展,时代的进步,尤其是近几年智能手机的发展,人们对于信息的需求越来越高。面对浩瀚的信息海洋,我们难免会遗漏一些对自己来说很重要的信息。于是本人决定针对信息查漏补缺而开发一款及时性信息的新闻客户端,来让人们可以更好的整理信息。而随着智能手机的大众化,越来越多的人应用智能手机,相对的对手机软件的需求也就越来越多。当今时代手机不再只是用来打电话、发短信的工具,反而对手机的娱乐功能要求越来越高。手机新闻也成为了人们的主要获取信息途径之一。目前中国新闻行业已经具备了相当的规模,并在国际市场上已有一定的竞争力。苹果手机作为当今中国智能手机市场上不可或缺的一个品牌,基于iOS的手机软件需求量也就相应的越来越强。市场上的汽车新闻品牌繁多,定位不一,基本满足了各层次消费者的需求,例如:易车、汽车之家等等这些大家所熟知的汽车新闻已经在苹果软件中占据了一定的地位。智能手机的普及使得移动信息平台成为了主流,从而使手机客户端有了生命力。伴随着苹果手机进入中国市场,相应的iOS技术逐渐流行起来。而对于开发苹果应用的语言Object-C,也成为当今社会最流行的开发语言,并且保持着强劲的上升趋势,隐隐有超过C语言的现象。对于其他的开发语言,例如Java、Javascripe,Object-C以其强大的优势遥遥领先于这些其他的编程语言。本人根据当前的形式,决定引用这种这种技术来开发手机应用。1.2 易车App概述设计思想:自己的易车客户端设计的过程是按照一般的应用开发流程进行的。自己首先调查了当今社会,人们对汽车资讯的需求,从而决定自己开发一款汽车类资讯软件。在有了用户的需求后,本人开始开发属于自己的汽车软件。在真正设计App的过程中,本人先决定了软件的整体框架结构,应用的图片出处等等这些开发必需的部分。在决定了整体框架后,就是真正的开发了。设计目标:首先收集过去一周内发生的汽车领域的重要的事情,然后根据人们的不同的喜好将汽车资讯进行分类整理,方便人们找到自己喜欢的汽车类的资讯,为了方便用户购买汽车,该客户端支持多种条件查询车辆,还可以查看车辆的详细配置,以及所在地区的4s的优惠信息,为了更好的服务用户,同时也支持用户注册登录,为了方便用户登录,还集成市面上主流社交媒体例如QQ、微信、新浪微博等第三方账号登录,用户登录后可以在车友模块内发表文字,图片等信息,为了增强该客户端的可实用性,在车友界面支持用户发表自己的意见,方便用户之间的交流。第2章 软件的设计2.1 总体设计随着人们在手机上花费的时间,通过手机新闻端来收集汽车新闻成为大多数人,每天都要干的事情了。手机操作系统有很多。而苹果系统的软件具有的特点就是美观、简洁、易操作。根据这些信息,设计一款小巧的基于iOS的汽车资讯很容易得到用户的青睐。同时本人从去年开始接触iOS,在学习了几个月后,对iOS开发有了一些理解,所以对于这次毕业设计,我就选择了基于iOS系统开发一款产品。希望通过这次毕业设计来进一步巩固自己的iOS开发水平。使自己在以后的社会竞争中更加具有优势。2.2 详细设计2.2.1 设计的目的该系统主要是针对易车App进行设计的,参照原本App的功能模块进行设计,能够浏览新闻,视频,各地区汽车优惠信息,各种汽车的图片以及详细配置及参数等功能。设计此汽车资讯App根本目的是利用现代化的信息技术手段,使人们更及时的了解到汽车资讯,更加方便的购买汽车。2.2.2 可行性分析可行性分析也可称为可行性研究,是在网上调查的基础上并辅助其他的信息渠道,针对基于iOS的汽车资讯的开发是否具备必要性和可能性。对易车的开发从技术、操作、经济等不同方面进行分析研究,来保证投资的失误,保证客户端的开发成功。就我们学的的知识可以在最短的时间内分析出这款基于iOS的易车是否可以达到预定的效果。1.经济可行性分析:这款基于iOS的易车App的开发是通过苹果系统的Xcode6.0来进行的。本人有一台mac mini可用于开发,通过四个月的学习iOS知识,而且自己抓到了接口,所有开发所需要的硬件、软件均可以获得。自己也可以通过破解现有App store上的在线应用,来获取自己想要的资源。并且这个过程很是简单,不存在浪费人力物力的现象。所以得出开发一款基于iOS的易车App在经济方面是可行的。2.社会可行性分析:开发这款易车App,本人不是为了盈利的目的不会损害到任何人的利益。本人开发这款易车App符合国家的方针政策,不影响任何组织的利益,没有宗教方面的宣传同时不会影响社会稳定。所以可以得出本人开发基于iOS的一折抢购见在社会方面是可行的。3.技术可行性分析:开发基于iOS的易车App运用到的技术是Object-C,以及一些iOS开发的UI设计,某些类库的应用等等。就技术方面而言,自己学习iOS技术已经有四五个月的基础了,而且有过相关类似的开发经验,相对于开发一款汽车资讯应用类软件而言自己的技术是完全可以胜任的。而自己的Xcode完全可以胜任这次开发的需求,从而分析得出开发这款易车App在技术方面是可行的。所以,综上所述本人的基于iOS的易车App的开发是可行的。2.2.3 需求分析需求分析指的是在建立一个新的应用的时,就这个新的应用的目的、范围、定义及功能这些方面所要做的工作。需求分析是完成一个应用必不可少的部分。在进行一款项目开发的过程中,开发者必须确定客户的需求,在确定了客户需求后才能进行应用的开发。根据当前社会形势,苹果系统在中国已经成为主流手机之一,单单是iOS方面的汽车资讯行业也已经具备了相当的规模。市场上的购物App繁多,定位不一,基本满足了各层次消费者的需求。最新的调查显示比较大的汽车资讯市场,并不是很乐观,而简单,直观的汽车资讯却很受年轻人的青睐和欢迎。基于此设计资讯重点还是在于简单的外形和其最新的汽车信息,新型的汽车资讯要有其他的附加功能,可以更好的吸引用户。2.2.4 方法和技术1.Object-C技术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执行时间会取代了整个系统的运作相反。OC写成的程序通常不会比其原始码大很多,而其函式库亦和Smalltalk系统要使用极大的内存来开启一个窗口的情况相反。2.Xcode开发工具使用Xcode非常方便,不需要配置系统环境,安装方便,极大地方便了开发人员,而且Xcode功能强大,尤其是storyBoard的使用,可以极大地方便开发人员,极大地简化了代码量。Xcode界面优美,非常符合开发人员的使用习惯,是开发人员非常喜欢的编译工具。基于iOS的应用最快捷的方式。Xcode是苹果公司向开发人员提供的集成开发环境。其运行于苹果公司的Mac操作系统下管你用C、C+、Objective-C或Java编写程序,在AppleScript里编写脚本,还是试图从另一个奇妙的工具中转移编码,你会发现Xcode编译速度极快,每次操作都很快速和轻松苹果公司为用户提供了全套免费的Cocoa程序开发工具。Mac OS X一起发行,在苹果公司官方的网站下载。3. FMDE介绍FMDB基于SQLite构建,是对SQLite的封装。相对原生SQLite API来说,它更加友好直观,便于Objective-C开发者调用。不论是在自动引用计数(Automatic Reference Counting,ARC)还是手动内存管理情形下,FMDB都可以分辨,并进行相应优化。SQLite是一款轻型的数据库。是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。SQLite包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。不像常见的客户-服务器范例,SQLite引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分。所以主要的通信协议是在编程语言内的直接API调用。这在消耗总量、延迟时间和整体简单性上有积极的作用。整个数据库都在宿主主机上存储在一个单一的文件中。它的简单的设计是通过在开始一个事务的时候锁定整个数据文件而完成的。第3章 软件的实现在经过可行性分析后本章将主要介绍应用的总体设计。应用所实现的功能的强弱是衡量一款应用的标准。通过对该客户端的全面分析并结合调研的情况,得出了这款易车App的设计与功能模块。3.1 硬件结构规划与设计本易车App在性能上要求计算机能够支持苹果系统下的Xcode运行。计算机硬件要求如表1-1所示:表1-1计算机硬件配置图 环境 最小配置 物理内存 最小2G,建议4GB 虚拟内存 RAM大小的两倍 临时磁盘空间 100MB 硬盘空间 40GB 视频适配器 256种颜色 处理器 最小200MHz,建议1GHz以上3.2功能模块概括根据需求分析的结果得到易车App的基本模块包括以下几个模块1.引导页模块:在首次使用该软件时出现的向导,指导人们如何使用该应用,再次进入该程序是就不会再出现,引导界面只是在第一次运行该程序时出现,起到帮助用户更好地理解根新版本的应用。2.头条模块:该模块主要包括5部分(要问,视频,新闻,评测,导购),是该客户端实现新闻资讯功能的主要界面,要闻界面收集了最新的汽车新闻,视频界面有用户使用汽车的使用心得,以视频的形式展现出来,新车界面收集了最新发布的汽车,评测界面里有专业的评测机构发布的消息,让用户更加清晰的了解到该汽车的优缺点,性价比,导购界面里面有两种类似且不同的汽车进行比较,方便用户更加清晰地选择汽车。3.车会模块:里面有用户上传的文字没图片信息,类似QQ空间的布局,用户可以在里面各抒己见,发表文字,图片等信息,还算可以进行互动,发表评论。4.选车模块:选车是该客户端与其他客户端的最大不同,选车模块支持多种不同条件进行选车,用户在选择满意的汽车后可以点击进入汽车的详细信息界面。5.活动模块:通过百度SDK自动定位到用户所在的城市,然后自动匹配坐在城市的优惠信息,当然用户也可以查看其他城市的优惠信息。登录模块:支持用户登陆到自己的服务器上,同时为了方便用户登录,使用友盟第三方登陆平台,支持微信,新浪微博,QQ等主流社交软件第三方登陆。推送模块:先是自己的服务器向苹果的服务器发送消息,然后由苹果的服务器向用户发送最新消息,用户可以点击进入详情信息,也可以选择忽略此消息。3.2.1 引导页模块用户在首次使用该软件时,会有一个引导页,既可以告诉用户如何使用易车软件,也可以让用户一眼能看到该软件的亮点;还有以后版本升级更新后,这个引导页更是必不可少的,能够让用户一目了然的看到新版本增加的功能。3.2.2 头条模块用户可以通过此模块来联网看最新信息。具体功能包括要闻,视频,新车,评测,导购等子界面。1.要闻要闻界面收集了最新的汽车领域的信息,且通过互联网可以随时更新信息,帮助用户随时随地了解到第一手的汽车资讯,用户还可以点击其中的一条信息,进入到资讯的详情界面,方便用户更加的了解该条信息的详细内容。2.视频视频界面里面包含了苹果官方自带的视频播放器,用户点击一个视频信息后,会自动跳转到视频播放界面,播放视频。3.新车新车界面里面包含各个汽车厂家的最新发布的汽车,还有即将发布的汽车信息,同时先信息还包含了新推汽车的亮点以及与其他老款汽车的区别。4.评测评测界面里面有个各种评测机构发布的最新评测信息,让用户更加了解汽车汽车的优缺点,还进行了性价比的测试,用户可以根据自己的实际情况进行参考,然后购买汽车。5.导购首先对两款类似的汽车进行比较,具体分析出每一款汽车的有点以及不足之处,让用户在类似汽车中根据自身实际情况选择组要的需要购买的汽车。3.2.3 车会模块1.推荐界面推荐界面是服务器根据用户的浏览记录以及评价的热度有条件选择出浏览次数最多的用户评论,方便用户找到最有价值的推荐信息。用户发表的评论里面含有发表的地址,时间,图片文字信息等等。2.最新界面最新界面是服务器按照发布消息时间的长短显示出最新发布的信息,用户可以查看别人发的消息,还可以通过下拉刷新来展示最新发布的消息,还可以通过上拉加载显示更多的消息。3.2.4 选车模块支持多种条件选车,进入详情界面还可以看到汽车的详细信息(综述,参数,降价,口碑,资讯,论坛)使用户更加清晰的了解到汽车的详细信息,还可以进行车型比较,方便用户更加清楚地了解车型;3.2.5 活动模块通过百度SDK自动定位到所在的城市,然后推荐所在的城市的最新活动信息,方便用户去实体店体验,用户可是同时查看到最新活动地址的地理位置消息,还可以查看优惠店的电话等基本信息。3.2.6 推送模块在以前是没有推送的,但是人们不可能时刻关注汽车新闻的动态,所以才有了推送,在新的优惠或者新车发布信息到达时,会给用户提示,并且展示推送内容的标题,这样人们可以在最短的时间内知道最新的新闻,方便用户使用,同时,用户可以根据推送的标题去直接点击查看详细内容。3.2.7 登录模块通过友盟实现微信,新浪微博,QQ等主流社交软件第三方登陆,方便用户登录,增强用户体验,还可以自己注册账号实现登录,登陆成功后,用户可以可以上传头像,还可以修改个人基本信息。3.3 软件功能架构易车客户端的软件功能架构如图1-2所示:应用页面头条车友选车活动我的应用详情页面图1-2 软件功能架构图专题页面可以根据不同的专题浏览各专题的应用,点击应用列表可进入应用详情界面,在应用详情界面里可以浏览,评价。头条页面的详情界面大致功能相同,都是一个webView。车友界面是用户可以用来交流心得的地方,里面有图片文字信息,选车界面实现了对汽车的搜索,活动界面是收录了各地区的优惠活动,我的界面是用户用来登陆的。3.4 软件的体系结构本软件是典型的iOS移动应用客户端, 采用建立在iOS系统之上的Cocoa Touch 应用程序架构。本软件遵循M V C 架构原则, 即数据( 模型, Model) 、视图(View) 和控制器(Controller) 分为各自独立的三层, 三层各自有自己的任务。数据层即模型层中主要封装了数据库有关和存储文档的数据类型。本软件主要数据来源于WebServiceAPI , 数据层中存储了所有新闻数据列表的信息、图片列表信息, 新闻正文内容以JSON文件形式保存于应用程序沙盒的缓存空间里, 图片内容以图片二进制形式保存于应用程序的缓存空间里。控制器层中包括引擎层和逻辑层。正文排版封装了为新闻正文数据排版的方法对正文信息的JSON文件进行解析和处理, 重新拼装出最终的正文HTML代码。需要预先计算所有视图框架的高度以及字符排版等特殊处理, 为视图层展示做准备。逻辑层主要负责应用逻辑部分, 包括数据调用逻辑、数据与视图关系的逻辑等等。逻辑层在代码上主要表现为各个视图控制器( UIViewcontroller) , 设置了整个应用各个视图之间如何切换, 数据关系如何协调等, 是衔接视图层和数据层最重要的部分。其中在本次设计中我使用了继承的方法来简化代码。视图层主要基于UIKIT框架的重写, 是对UIView 、 UIController、UITable ViewCell等基类view的封装, 构成了应用中所有的视图控件。UIKit提供了iOS视图层中的各个类, 对各种基本控件进行组装和排版, 并封装一部分界面逻辑代码, 构成应用需要的特定的视图控件, 如头条界面主列表单元格、在用户体验至关重要的移动应用中, 为了让视觉效果更加华丽, 大部分视觉控件设置了相应的视觉图片, 如各种控件按钮、背景图片和部分视觉元素等。第4章 详细设计与实现整体易车App,简洁,大方,美观,时时刻刻注用户体验,从流量,操作方便,直观等的角度去思考,进而设计出了如下的易车App。4.1 引导界面引导界面如图2-1所示:图2-1 引导界面代码如下:/ NSUserDefaults中读取第一次加载程序的标志位 NSUserDefaults * defaults = NSUserDefaults standardUserDefaults; NSString * friLoad = defaults objectForKey:Frist; if (friLoad.length = 0) self createFirstLoadView; UIImageView * imgView = UIImageView alloc initWithFrame:CGRectMake(320*i, 0, 320, 480); imgView.image=UIImageimageNamed:NSString stringWithFormat:help%d.png,i+1; s addSubview:imgView;当程序第一次运行时NSUserDefaults中的标志位还没有,所以会进入引导界面,方便用户更加清晰的了解管应用的功能以及改动信息,但以后再次运行该程序时,我们可以通过判断标志位是否存在来决定是否进入引导界面,如果NSUserDefaults已经有了该标志位,则不会进入该引导界面,否则会进入引导界面,同时还会在NSUserDefaults建立该标志位,防止下次运行程序还会进入次引导界面。4.2 头条界面头条界面如图3-1所示:图3-1 头条界面主要代码如下:view=UIViewallocinitWithFrame:CGRectMake(0,0,320,120);_pageController=UIPageControlallocinitWithFrame:CGRectMake(240,80,60,30);_pageController.numberOfPages=5;_pageController.userInteractionEnabled=NO;_scrollerView=UIScrollViewallocinitWithFrame:CGRectMake(0,0,320,120);viewaddSubview:_scrollerView;viewaddSubview:_pageController;_scrollerView.contentSize=CGSizeMake(320*5,120);_scrollerView.delegate=self;_scrollerView.pagingEnabled=YES;_scrollerView.showsHorizontalScrollIndicator=NO; for(inti=0;i5;i+)UIImageView*im=UIImageViewallocinitWithFrame:CGRectMake(320*i,0,320,120);TouTiaoModel*m=_dataArri;imsetImageWithURL:NSURLURLWithString:m.picCover;UILabel*l=UILabelallocinitWithFrame:CGRectMake(10,80,200,30);imaddSubview:l;l.text=m.title;l.font=UIFontsystemFontOfSize:15;_scrollerViewaddSubview:im; 头条界面是一个类似于自定义tableBar的界面,里面有5个试图控制器,其中要问界面是一个带头视图的tableView,视频界面是一个collectionView,其他三个(新车,评测,导购)由于UI界面类似,可以共用一个不带头视图的tableView,通过实现tableView中的代理方法,实现对头条界面的页面布局,还可以用过继承,例如新车,导购,评测界面,可以选择继承一个界面相同的名为FatherView的界面来实现代码的简洁性。其中FatherView使我们自己定义的一个界面,他也是一个tableView,通过对tableView的实例化,我们是实现了基本UI界面的布局,然后再通过对FatherView的继承,我们可以直接使用这个对象,极大地简化了代码量。头条,新车,评测,导购点击进入详情界面是一个webView,五个试图控制器加载在一个大的scrollerView里面,可以通过滑动进入相邻的界面,其中视频界面点击进入是一个MPMediaPlayer即iOS中自带的视频播放器,仅仅实现了视频播放器的基本功能,其他界面进入详情后是一个webView,可以使用ios自带的webView解析该数据。点击头条界面后进入的详情界面如图4-1所示: 图4-1 详情界面代码如下:NSURL *url = NSURL URLWithString:NSString stringWithFormat:TouTiaoDetailUrl,_newsId; NSURLRequest *request = NSURLRequest allocinitWithURL:url;/NSURLRequest是一个表示网络请求的类 UIWebView *webView = UIWebView allocinitWithFrame:CGRectMake(0, 0, 320, 480-64); self.view addSubview:webView; webView.scalesPageToFit=YES; webView.backgroundColor = UIColor clearColor; self.view addSubview:webView;webView loadRequest:request;/打开request指定的网页这个就是通过webView打开的网页,UIWebView是iOS自带的一种控件,可以解析后缀名为.Html的API,而且界面美观,使用方便,可以直接在webView上接入URL,即可出现原网页的手机版。4.3 车友界面车友界面如图5-1所示: 图5-1 车友界面车友界面是一个图文混排,其主要代码如下:TableViewCell *cell=tableView dequeueReusableCellWithIdentifier:cell forIndexPath:indexPath; if (_dataRr.count=0) return cell; CheYouModel *m=_dataRrindexPath.row; cell.headIm setImageWithURL:NSURL URLWithString:m.userAvatar; cell.fome.text=m.forumName; cell.naem.text=m.userName; cell.contentLable.text=m.content; CGSize size =cell.contentLable.text boundingRectWithSize:CGSizeMake(320, 1000) options:NSStringDrawingUsesLineFragmentOrigin attributes:NSFontAttributeName:UIFont systemFontOfSize:15 context:nil.size; cell.contentLable.frame=CGRectMake(0, 50, size.width, size.height); cell.headIm setImageWithURL:NSURL URLWithString:m.userAvatar; cell.time.text=NSString stringWithFormat:%d分钟前,selfgetDate:m.publishTime; self refreshPhoto:cell.iimView model:m.imageList; int heih=self getiimHeight:m.imageList.count; cell.iimView.frame=CGRectMake(0, 60+size.height, 320, heih); cell.mostView.frame=CGRectMake(0, 70+heih+size.height,320 ,35); cell.location.text=m.location; cell.zan.text= NSString stringWithFormat:%,m.agreeCount; cell.pinglun.text=NSString stringWithFormat:%,mentCount; self getLableiew:ment.count; self refreafLableView:cell.lableView array:ment; int hi=self getLableiew:ment.count; cell.lableView.frame=CGRectMake(0, 115+heih+size.height, 320, hi); TotalHifh=115+heih+hi+size.height; return cell;车友界面最重要的是cell的复用和各个UI控件坐标的计算,过程比较繁琐,在cell的复用过程汇总,一定要了解tableView的复用机制,在复用时,一定要记得还原cell的所有属性,在cell的复用过程中会复用以前留下的cell的所有属性,如果忘记还原cell的属性,则在后面复用cell的过程中会出现将界面消失的情况,不能够按照原数据所展示的界面实现应有的效果。在计算UI空间坐标时,可以在tableViewCell中实现坐标的计算,这样可以简化在主界面中的代码量,降低程序的耦合性;在计算各个UI控件时可以充分利用封装的思想,使代码显得整洁美观,其主要核心函数在于动态计算不定行数文字,以及九宫格图片所在的坐标,位置,确定完变化的坐标后,再去确定其他例如地理位置信息的坐标。4.4 选车界面选车界面如图6-1所示: 图6-1 选车界面代码如下:NSArray *btnArr=5万以下,5-8万,8-12万,12-18万,18-25万,25-40万,40-80万,80万以上,小型车,紧凑型车,中型车,SUV; for (int i=0; ibtnArr.count; i+) UIButton *b=UIButton buttonWithType:UIButtonTypeRoundedRect; b.frame=CGRectMake(20+i%4*75, i/4*50+90, 65, 40); self.view addSubview:b; b.tag=10+i; self.view addSubview:b; b.titleLabel.font=UIFont systemFontOfSize:15; b setTitle:btnArri forState:UIControlStateNormal; b setTintColor:UIColor blackColor; b addTarget:self action:selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside;选车界面通过添加标志位,在选择汽车条件时我们通过标志位的改变去改变URL中的参数,然后在想服务器发送该URL,接收服务器传回的JSON文件,该文件实现了多种条件的选车,可以通过选择价格,紧凑,国别等等信息来进行选车,选车界面是一个tableVIew,里面的每一个Cell所展示的数据即使我们按照条件选择出合适汽车,选择其中一款汽车,可以进入汽车的详情界面。点击进入详情界面如图7-1所示:图7-1 汽车的详情界面主要代码如下:-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath KouBeiTableViewCell*cell=tableView dequeueReusableCellWithIdentifier:cell; cell.model=_dataArrindexPath.row; return cell;-(NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section return NSString stringWithFormat:共%条口碑,RecordCount;-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section return _dataArr.count;-(void)makePinglnuView PingLunView *pinglun=NSBundle mainBundleloadNibNamed:PingLunView owner:self options:nillastObject; pinglun.SerialID=sstr; pinglun.frame=CGRectMake(0, 94, 320, 80); pinglun prepareData; self.view addSubview:pinglun; 选车详情界面是一个类似于自定义TabBar的界面,里面有6个试图控制器,但6个试图控制器的UI布局皆不同,所以需要自己定义6个视图;在定义6个试图控制器时,要注意不让这6个试图控制器之间有关联,我们可以把6个试图控制器放在一个数组(NSArray)里面,实现6个试图控制器之间相互独立,且又方便调用。每一个试图控制器根据服务器所传递过来不同的数据,然后进行UI布局。4.5 登录界面登陆界面如图8-1所示:图8-1 登陆界面代码如下:/友盟授权UMSocialData setAppKey:kUMengKey;/设置微信AppId,设置分享url,默认使用友盟的网址UMSocialWechatHandler setWXAppId:kWXAppID appSecret:kWXAppKey url:;/打开新浪微博的SSO开关UMSocialSinaHandler openSSOWithRedirectURL:;/设置分享到QQ空
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广东肇庆四会市威整镇专职消防队消防员招聘2人考试参考题库及答案解析
- 2025贵州贵阳京学新校区教师招募20人考试参考题库及答案解析
- 2025福建厦门市集美区润德实验幼儿园招聘产假顶岗教师2人考试参考题库及答案解析
- 2025宁波市江北区教育局第二批非编特聘制教师公开招聘8人考试参考题库及答案解析
- 企业员工培训计划范本及实施方案
- 2025山西晋中市第二人民医院招聘编制外人员6人考试参考题库及答案解析
- 2025浙江宁波象山县荔港学校招聘工作人员4人考试参考题库及答案解析
- 招19人!2025年互助县中医院、互助县人民医院面向社会公开招聘编外卫生专业技术人员(第一批)考试参考题库及答案解析
- 2025广西桂林市永福县福寿消防救援站政府专职消防员招聘11人考试参考题库及答案解析
- 电力安全行为测试题库及答案解析
- 2025年家政服务员劳务合同范文
- 2025-2026学年高一数学上学期第一次月考试题(考试版A4)
- 建筑公司法务知识培训课件
- 2025.9.3抗战胜利大阅兵初高中学生征文(高中):观九三阅兵有感
- 电梯维保流程课件
- 70周岁老人驾考三力测试题库及答案
- 镇静催眠药物临床合理使用指南
- 质量管理提升质量月宣传稿件范文
- DB62∕T 4339-2021 高速公路工地试验室标准化指南
- 焊接检测管理办法
- 国家能源集团陆上风电项目通 用造价指标(2025年)
评论
0/150
提交评论