作者声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成果,除了文中特别加以标注的地方外,没有任何剽窃、抄袭、造假等违反学术道德、学术规范的行为,也没有侵犯任何其他人或组织的科研成果及专利。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。 特此声明。
作者专业: 作者学号: 作者签名: ____ 年 ___ 月 ___ 日
摘 要
随着如今智能手机的普及,视频应用不仅仅只是在电脑上有很多人使用,越来越多的手机视频应用出现在各种手机平台上。据大致统计,视频应用在丰富我们的日常生活占据重要组成部分,因此开发一款好用的视频社交应用对于开发商来说是一件很具有市场前景的不错的选择。 当代社会节奏越来越快,短平快的视频更加符合人们的需求,我们已经越来越进入一个信息技术,科学技术都日益发达的时代,在日常生活中,各式各样的视频社交应用越来越普及,因此开发一款视频摄区APP是非常迎合用户需求的。 37摄区就是利用互联网技术的传播广泛性来设计实现的一款手机客户端的视频播放器应用。37摄区的主要特色就是控制用户上传视频在37秒之内,提倡大家通过短视频进行交流,软件分为五大模块:首页、喜好、上传、社区、我的,每个模块实现相应的功能,能够满足IOS手机用户在视频播放中的常见需求,为用户留下生活中的点点滴滴。 该APP是基于iOS平台下Objective-C开发语言实现,利用系统原生和第三方类库实现数据加载、视频播放和数据处理,主要实现各类视频信息的展示与播放功能,并具备观看视频信息与搜索视频信息的功能,具有简单、易操作和良好的用户体验度等特性。
关键词:手机客户端;IOS;视频社区;短视频
Abstract
With the popularity of smart phones, video applications are not just on the computer, many people use, more and more mobile video applications appear on a variety of mobile platforms. According to rough statistics, rich video applications in our daily life occupies an important part, therefore the development of a good social video applications is a very promising option for developers. The rhythm of modern society is more and more fast, fast track video more in line with the needs of the people, we have more and more access to an information technology, science and technology are increasingly developed era, in daily life, every kind of social video applications are becoming more and more popular, so the development of a video camera APP is to meet the needs of users. 37 is to use the spread of Internet technology to design and implement a mobile client video player applications. The main features of the 37 photo district is to control the users to upload video in 37 seconds, we promote through short video communication, the software is divided into five modules: first, preferences, upload, community, I, each module to achieve the corresponding functions to meet the common needs of IOS mobile phone users in the video playback, for leave a little drops of life users. The APP is a Objective-C language under the iOS platform based on the realization of class library, data loading, video playback and data processing system using the original and third party, mainly to achieve all kinds of video information display and playback function, and have to watch video information and video information search function, has the advantages of simple and easy operation and good user experience. Characteristic. Key Words: mobile client; IOS ; Video community;Short video
目 录
第1章 绪论 1
1.1 课题研发的背景 1 1.2 课题研究的目的和意义 1 1.3课题预期的目标 2
第2章 相关技术的介绍 3
2.1 系统开发环境 3 2.2核心技术介绍 3 2.2.1 内存管理机制 3 2.2.2 OC语言 4 2.3开发所用的关键类 5 2.3.1显示类 6 2.3.2功能类使用 6
第3章37摄区需求分析 7
3.1系统功能需求分析 7 3.2首页功能需求 9 3.3喜好页面功能需求 9 3.4上传页面功能需求 10 3.5社区页面功能需求 11 3.6我的页面功能需求 12
第4章37摄区系统设计 13
4.1系统功能流程图 13 4.2首页页面功能流程图 14 4.3喜好页面功能流程图 15 4.4上传页面功能流程图 16 4.5社区页面功能流程图 16 4.6我的页面功能流程图 17
第5章37摄区系统实现 19
5.1应用程序编码实现 19 5.2首页功能模块实现 21 5.3喜好功能模块实现 23 5.4上传功能模块实现 25 5.5社区功能模块实现 27 5.6我的功能模块实现 29
第6章 总结与展望 32
参考文献 33
致谢 34
第1章 绪论
当今社会已经进入了一个科学技术、信息技术都日益发达的时期,关于视频的应用已经日益普及。在我们生活中经常可以见到对于我们的日常生活来说必不可少的高科技产品,例如平板电脑、智能手表、智能手机等等[1]。在所有的城市当中,几乎每天都可以看到拿着手机认真的观看视频的人们,这在我们工作生活中已经形成一种不可缺少的一部分。
1.1 课题研发的背景
视频软件应用在人们生活中已经越来越普及,但是实际用户长期使用视频播放软件只有那么寥寥几个应用,软件开发者面临的用户需求挑战远比竞争对手要难得多。苹果软件开发者一样面对这样的难题,在视频播放软件市场中成功的软件很少,大多数都是在无数的应用软件里掩盖的无影无踪,或者慢慢的无法坚持下去退出大家的视野。现实是残酷的,苹果软件开发者仍一批批勇往直前,因为在信息急速发展的时代中,苹果软件开发任然占据主流,仍被看好,是将来软件应用市场里的一个方向[2]。虽然软件开发路途上很艰难,但是只要人们的生活消费水平提高,苹果手机在全世界的普及使用,苹果软件开发将会迎来光明的时代。
1.2 课题研究的目的和意义
当代社会节奏越来越快,短平快的视频更加符合人们的需求,我们已经越来越进入一个信息技术,科学技术都日益发达的时代,在日常生活中,各式各样的视频播放器应用越来越普及,因此开发一款视频摄区APP是非常迎合用户需求的。37摄区视频播放器是利用网络的快速传递的特点进行超大范围的传播,从而来设计实现的让用户在手机上观看视频的视频摄区播放器的应用。37视频社区可以建立一个公众的短视频分享社区,并且可以在摄区中添加好友、关注好友,并且和好友聊天互动,留下你生活中的点点滴滴。探讨分析37摄区软件的需求及功能要点,并总结归档;在对软件的需求及功能要点分析的基础上,根据首页、喜好、社区、我的等主要页面功能写出相应的接口,并总结成接口文档;制作出低保真原型图,并且实现简单的交互跳转等功能;低保真原型图,编码实现每个页面的所有功能。 开发37摄区APP的目的就是为了给大众用户开发出一片方便大家观看娱乐的,会想交流的视频社区播放平台。经过这个37摄区项目的开发,人们可以上传自己喜欢的视频或者分享收藏朋友的视频,可以在社区里面进行分享,包括即时聊天,看自己想要的视频信息,本项目可以通过九大分类来达到用户的需求,用户可以根据自己的喜好建立群组,在群组中探讨分享视频,通过网络和人们普遍使用的手机等通讯工具来度过自己的娱乐和休闲时间[4]。
1.3课题预期的目标
37摄区APP的控件使用了按钮,图片,label,以及第三方上拉加载,下拉刷新,网络请求等库。通过查阅文献,在掌握应用的设计与实现的基本方法和思路的基础上,首先完成页面搜索视频、收藏视频、上传视频、播放视频等功;实现添加好友、好友即时聊天、好友关注;以及针对需求文档和接口文档制作出原型图,并实现页面设计及交互设计,根据原型图进行每个页面的设计与实现,探讨分析37摄区软件的需求及功能要点,并总结归档;在对37摄区软件的需求及功能要点分析的基础上,根据首页、喜好、社区、我的等主要页面功能写出相应的接口,并总结成接口文档;制作出低保真原型图,并且实现简单的交互跳转等功能;低保真原型图,编码实现每个页面的所有功能。
第2章 相关技术的介绍
针对37摄区具体实现来说,我们所需要的开发进度和完成效果的重要原因是有强大的技术支持和软件支持。所以对于本课题中所需要的开发技术说明分为如下四部分:系统开发环境、核心技术介绍、开发所使用到的关键类、开发步骤。
2.1 系统开发环境
37摄区是在Xcode中开发完成,由Objective-C程序设计语言来实现,是开发人员建立Mac OS X应用程序的最快捷方式,也是利用新的苹果电脑公司技术的最简单的途径[5],添加好友、好友即时聊天、好友关注;以及针对需求文档和接口文档制作出原型图,并实现页面设计及交互设计,根据原型图进行每个页面的设计与实现,包括分立和多视图的代码编辑器,进行几乎无限的定制,还支持几个源代码管理系统,使您可以将文件追加到代码库、获取更新版本、进行版本的比较、以及提交修改 [6]。
2.2核心技术介绍
开发37摄区APP的目的就是为了给大众用户开发出一片方便大家观看娱乐的,会想交流的视频社区播放平台。经过这个37摄区项目的开发,人们可以上传自己喜欢的视频或者分享收藏朋友的视频,可以在社区里面进行分享,包括即时聊天,看自己想要的视频信息,本项目可以通过九大分类来达到用户的需求,用户可以根据自己的喜好建立群组,在群组中探讨分享视频,通过网络和人们普遍使用的手机等通讯工具来度过自己的娱乐和休闲时间[7]。 2.2.1 内存管理机制 每个IOS开发中,内存中的对象主要有两类,一类是值类型,另一类是引用类型,实现添加好友、好友即时聊天、好友关注;以及针对需求文档和接口文档制作出原型图,并实现页面设计及交互设计,根据原型图进行每个页面的设计与实现,探讨分析37摄区软件的需求及功能要点,并总结归档;在对37摄区软件的需求及功能要点分析的基础上,根据首页、喜好、社区、我的等主要页面功能写出相应的接口,并总结成接口文档;制作出低保真原型图,并且实现简单的交互跳转等功能;低保真原型图,编码实现每个页面的所有功能。 2.2.2 OC语言 OC语言是一种以C为基础,并结合smalltalk特征扩充出来面向对象的语言,实现添加好友、好友即时聊天、好友关注;以及针对需求文档和接口文档制作出原型图,并实现页面设计及交互设计,根据原型图进行每个页面的设计与实现,探讨分析37摄区软件的需求及功能要点,并总结归档;在对37摄区软件的需求及功能要点分析的基础上,根据首页、喜好、社区、我的等主要页面功能写出相应的接口,并总结成接口文档;制作出低保真原型图,并且实现简单的交互跳转等功能;低保真原型图,编码实现每个页面的所有功能OC是一门面向对象的编程语言。OC语言具有三大特征:封装,继承和多态[10]。 1.封装 隐藏内部实现,稳定外部接口,把具体的对象封装成抽象的类,隐藏内部实现,对象的属性和实现细节,仅对外公开接口,提高代码的安全性,实现模块化调用[11]。为元素共有私有就是为了隐藏实现细节,只露一个干净的接口,让业务逻辑被实现细节所污染,就是所谓的封装。 2.继承 子类可以直接复用父类中的成员,拥有父类的所有非私有的成员变量、属性和方法就是is-a的关系,子类可以扩展父类没有的属性和方法,是一种强耦合关系,就是父类变了,子类就不得不变[11]。 3.多态 不同对象对同一消息的不同响应,实现同一个接口,使用不同的实例而执行不同的操作。就是不同对象响应同一方法时做出的不同反应,是一种现象。类的多态即父类的指针指向子类的对象,所以没有继承就没有多态,使用多态时,会动态检测,以调用真实的对象方法。
2.3开发所用的关键类
UI即User Interface的简称。UI设计是指对软件的操作逻辑、人机交互、界面设计的完整设计。UI处于苹果开发系统的四层结构的最上层,并且放置在UIKit框架下,它跟用户的操作息息相关,所以包含的控件也特别多[12]。子类与父类之间继承关系如图2.1所示:
图2.1子类与父类之间继承图
2.4应用开发步骤
在这37摄区APP的开发过程中,首先要做的是软件整个的系统设计以及界面设计,接着要对每个页面做详细以及交互跳转,静态页面以及图片设计等等,然后根据UI设计出来的每一个页面的详细页面对需要使用到的相关类进行划分,实现添加好友、好友即时聊天、好友关注;以及针对需求文档和接口文档制作出原型图,并实现页面设计及交互设计,根据原型图进行每个页面的设计与实现,探讨分析37摄区软件的需求及功能要点,并总结归档;在对37摄区软件的需求及功能要点分析的基础上,根据首页、喜好、社区、我的等主要页面功能写出相应的接口,并总结成接口文档;制作出低保真原型图,并且实现简单的交互跳转等功能;低保真原型图,编码实现每个页面的所有功能,其中包括所有页面中使用到的控件类型与类中属性、方法的关联和第三方框架的使用,都要作出详细的列表,进行统计,下面我们就简单了解一下37摄区APP具体的操作步骤。 2.4.1项目的系统设计 37摄区APP的设计方法与其它应用项目的设计方法相同,首先我们需要做需求分析,根据统计用户的要求来设计整个系统的功能,主要包括功能设计、流程设计、数据库设计等;但是苹果应用开发需要多考虑一些内容,就是基于苹果操作系统的系统属性的特征各异,要先计划好,经过这个37摄区项目的开发,人们可以上传自己喜欢的视频或者分享收藏朋友的视频,可以在社区里面进行分享,包括即时聊天,看自己想要的视频信息,本项目可以通过九大分类来达到用户的需求,用户可以根据自己的喜好建立群组,在群组中探讨分享视频,通过网络和人们普遍使用的手机等通讯工具来度过自己的娱乐和休闲时间你的应用主要是在哪种设备上应用的,要根据该设备做好规划[9]。 2.4.2页面详情设计 在iOS应用开发中,页面也被称作视图,用户看到的一个一个“页面”或“窗口”,也就是有一个一个视图呈现出来;在苹果应用开发中,可以先做视图,即在页面上要让用户看到的内容,在视图上,可以放一些“控件”,与我们在其它开发中常用的控件相似,有按钮、文本框、列表等,程序要做的就是使用苹果开发软件工具,将控件放置在视图中,并设计好位置,及样式;经过这个37摄区项目的开发,人们可以上传自己喜欢的视频或者分享收藏朋友的视频,可以在社区里面进行分享,包括即时聊天,看自己想要的视频信息,本项目可以通过九大分类来达到用户的需求,用户可以根据自己的喜好建立群组,在群组中探讨分享视频,通过网络和人们普遍使用的手机等通讯工具来度过自己的娱乐和休闲时间,在苹果开发软件中,所有视图可以被放在一个叫做storyboard的“面板”中,并通过视图把每一个页面联系起来,让用户一下就可以看清楚怎么使用,对功能了如指掌,只是把页面做好还不是所有的任务,还要通过相关代码,间每个功能毫无缺陷的实现出来才是最重要的,完美的体现出来视频播放器的功能 [9]。 2.4.3页面相关类的设计 要想使每个页面中的每个功能以及控件都能完美的体现出他们的价值,就要将每个控件划分出自己单独的类,在一般情况下,APP中有多少个控价,就对应的一一划分出多少个类,除此之外,还要实现一些功能,如点击后会有下一动作或响应一个事件,就要在类中加入相关的方法,经过这个37摄区项目的开发,人们可以上传自己喜欢的视频或者分享收藏朋友的视频,可以在社区里面进行分享,包括即时聊天,看自己想要的视频信息,本项目可以通过九大分类来达到用户的需求,用户可以根据自己的喜好建立群组,在群组中探讨分享视频,通过网络和人们普遍使用的手机等通讯工具来度过自己的娱乐和休闲时间,该方法必须要加前缀,Objective-C中类的定义通常写在两个文件中,“.h”文件主要写类的声明部分,如属性以及方法明;“.m”文件主要写方法的实现部分,即每个方法具体要执行的程序;类编写好后,通常会起一个与页面相关的名字,方便在下一步骤中做关联[10]。 2.4.4页面控件与类中属性、方法的关联 要让页面中的控件与类的属性或方法能够关联在一起,也就是说。控件的动作可以触发类中的属性或方法,需要打开Xcode的storyboard面板,在左侧将类列表打开,在列表中找到刚才保存好的类;先选中页面“view”,在右侧打开“custom class”窗口,在“class”列表中,选择相关的类,可以将类与相关页面关联,下一步要关联每个控件与类中的属性及方法;这时右键点击左侧打开的类名,会出现一个属性及方法列表,用左键点击某一属性的名字,经过这个37摄区项目的开发,人们可以上传自己喜欢的视频或者分享收藏朋友的视频,可以在社区里面进行分享,包括即时聊天,看自己想要的视频信息,本项目可以通过九大分类来达到用户的需求,用户可以根据自己的喜好建立群组,在群组中探讨分享视频,通过网络和人们普遍使用的手机等通讯工具来度过自己的娱乐和休闲时间,拖动鼠标直到页面中相关控件处,即完成控件与类中属性的关联,在程序运行过程中,控件上的数据可直接返回给属性,也可通过修改属性值,来改变相关空间的数据;如果点击该控件还要触发类中方法时,可用相同方法,选择类的方法,用鼠标左键拖到页面中的控件位置,然后释放[11]。
第3章37摄区需求分析
本软件不仅可以建立一个公众的短视频分享社区,留下你生活中的点点滴滴。主要功能有,可以上传生活中拍摄的短视频,或者上传收藏的视频,可以在社区中给朋友分享视频,而为还可以建立相同喜好的群组聊天,分享。在我的页面有视频剪辑、转GIF、视频日记等功能。
3.1系统功能需求分析
在开发进行之前,我们需要了解我们开发的项目需要实现的功能模块。就本课题来说,视频播放类的APP,最重要的就是视频信息的展示、搜索与播放。下面对整个系统功能需求进行分析。系统功能需求如图3.1所示:
图3.1系统功能需求图
3.2首页功能需求
首页主要分三大功能模块,分别有收藏、主页、视频分类三个页面展示。首页功能需求如图3.2所示:
图3.2首页功能需求图
(1)收藏页面的主要功能是收藏日常生活中喜欢的视频,方便用户查找; (2)主页页面的主要功能是,视频搜索、热门视频推荐、视频分类等功能; (3)视频分类页面主要功能是展示九大分类,分别为:音乐、脱口秀、TV、科技、游戏、天文、电影、生活、搞笑九大类。
3.3喜好页面功能需求
喜好页面的主要有四大功能,分别是我的群组功能、我的关注功能、即时聊天功能、添加好友功能。喜好功能需求如图3.3所示:
图3.3喜好功能需求图
(1)我的群组功能主要可以查看到我添加的群组列表,和进入群组进行聊天; (2)我的关注功能,可以关注周边的朋友等功能,即时聊天功能是可以和朋友进行实时聊天; (3)添加好友功能是添加朋友和搜索周边朋友进行添加聊天,分享视频等功能。 (4)即时聊天是使用融云SDK实现的一种即时聊天功能,可以实时给好友发送消息。
3.4上传页面功能需求
上传页面的主要有两大功能,分别是上传帖子功能和上传视屏功能。上传页面功能需求如图3.4所示:
图3.4上传功能需求图
(1)上传帖子功能是用户可以发送图片和文字到帖子空间; (2)视频信息上传是视频播放器的功能之一,它主要是用户将自己喜欢的或者想收藏的视频,通过上传界面将视频上传到服务器,相关视频就可以在页面显示,可供朋友、关注着或者粉丝点击观看或者分享收藏评价等操作。
3.5社区页面功能需求
社区页面主要分为帖子搜索功能、帖子详情功能、帖子分类功能、帖子推荐功能、帖子点赞,收藏等功能。社区功能需求如图3.5所示:
图3.5社区功能需求图
(1)帖子搜索功能主要可以通过搜索帖子名字来查看自己或者朋友发出的帖子; (2)帖子详情功能是通过点击帖子,可以进去帖子详情页,该页面可以查看帖子时间,内容等详细信息; (3)帖子分类里面又详细分为三大类:分别是创意分享、游戏杂谈、情感故事三大类; (4)帖子推荐功能主要是推荐热门和点击量爆表的火热帖子; (5)帖子点赞和收藏功能主要是用户对自己喜欢的帖子进行收藏和点赞。
3.6我的页面功能需求
我的页面主要功能分为三部分,分别是我的设置,登录、注册和个人中心。我的页面功能需求如图3.6所示:
图3.6我的功能需求图
(1)我的设置里面包含清除缓存、联系我们、当前版本、核心组件、启动组件等功能; (2)登录注册页面主要功能是登录APP,注册账号,密码丢失可以通过忘记密码来找回; (3)个人中心是由日记列表、剪辑工具、转GIF、个人主页等小功能组成,可以给用户更好的体验。
第4章37摄区系统设计
在完成了对课题的所需技术介绍以及需求分析之后,就要对系统实现所需的各种具体类与方法进行设计。在苹果开发过程中,一般使用Model View Controller框架对代码模块进行管理、方法与方法之间可复用、保证类与类之间不冲突、代码不冗余。对于本课题而言,主要通过对使用对象模型的分析设计,Model View Controller模式的设计来完成系统的设计纲要[13]。
4.1系统功能流程图
根据Model View Controller设计及模式和规则,设计该系统的详细流程图,其中的设计包括,登录、注册、判断是否登录成功,以及登录成功后看到的五个根页面,登陆成功首先看到的是首页页面,然后点击应用底部的菜单栏可以分别看到喜好页面、上传页面、社区页面以及我的页面。 (1)首页页面的主要功能是视频搜索、热门视频推荐、视频分类等功能; (2)喜好页面的主要功能流程是即时聊天,关注好友等流程; (3)上传页面主要功能流程是上传视频,上传帖子等流程; (4)社区页面的主要功能流程是分享帖子,收藏,关注等流程; (5)上传页面的主要功能流程是视频剪辑,转GIF等流程; 系统流程图如图4.1所示:
图4.1系统设计流程图
4.2首页页面功能流程图
首页主要分三大功能模块,分别有收藏、主页、视频分类三个页面展示。首页流程图如图4.2所示:
图4.2首页页面流程图
(1)收藏页面的主要功能是收藏日常生活中喜欢的视频,方便用户查找; (2)主页页面的主要功能是,视频搜索、热门视频推荐、视频分类等功能; (3)视频分类页面主要功能是展示九大分类,分别为:音乐、脱口秀、TV、科技、游戏、天文、电影、生活、搞笑九大类。
4.3喜好页面功能流程图
喜好页面的主要有四大功能,分别是我的群组功能、我的关注功能、即时聊天功能、添加好友功能。喜好流程图如图4.3所示:
图4.3喜好页面流程图
(1)我的群组功能主要可以查看到我添加的群组列表,和进入群组进行聊天; (2)我的关注功能,可以关注周边的朋友等功能,即时聊天功能是可以和朋友进行实时聊天; (3)添加好友功能是添加朋友和搜索周边朋友进行添加聊天,分享视频等功能。
4.4上传页面功能流程图
上传页面的主要有两大功能,分别是上传帖子功能和上传视屏功能。上传页面流程图如图4.4所示:
图4.4上传页面流程图
(1)上传帖子功能是用户可以发送图片和文字到帖子空间; (2)视频信息上传是视频播放器的功能之一,它主要是用户将自己喜欢的或者想收藏的视频,通过上传界面将视频上传到服务器,相关视频就可以在页面显示,可供朋友、关注着或者粉丝点击观看或者分享收藏评价等操作。
4.5社区页面功能流程图
社区页面主要分为帖子搜索功能、帖子详情功能、帖子分类功能、帖子推荐功能、帖子点赞,收藏等功能。社区流程图求图4.5所示:
图4.5社区页面流程图
(1)社区里面又详细分为三大类:分别是创意分享、游戏杂谈、情感故事三大类; (2)社区分类中主要包括我的帖子和我收藏的帖子;
4.6我的页面功能流程图
我的页面主要功能分为三部分,分别是我的设置,登录、注册和个人中心。我的页面流程图如图4.6所示:
图4.6我的页面流程图
(1)我的设置里面包含清除缓存、联系我们、当前版本、核心组件; (2)登录注册页面主要功能是登录APP,注册账号,密码丢失可以通过忘记密码来找回; (3)个人中心是由日记列表、剪辑工具、转GIF、个人主页等小功能组成,可以给用户更好的体验。
第5章37摄区系统实现
我们大致了解了37摄区的开发模式以及开发所使用到的框架和第三方库,通过对系统做出的需求分析,并且通过需求分析设计出的原型图。下面就到了代码的编辑实现模块,首先我们要建一个新的工程,并且做出相应的配置,接着要了解每个页面要设计的类,了解每个类与类之间的关联,以便我们下面的代码实现跟好操作。根据我们的原型图,对每个页面需要实现的功能进行代码的编辑封装实现,以便将代码方便重复使用和整体模块化。 经过这个37摄区项目的开发,人们可以上传自己喜欢的视频或者分享收藏朋友的视频,可以在社区里面进行分享,包括即时聊天,看自己想要的视频信息,本项目可以通过九大分类来达到用户的需求,用户可以根据自己的喜好建立群组,在群组中探讨分享视频,通过网络和人们普遍使用的手机等通讯工具来度过自己的娱乐和休闲时间。
5.1应用程序编码实现
1.网络数据处理 在37摄区中通过点击或者跳转到相应的页面,通过封装好的网络请求代码方法实现网络请求,并且获取数据并在每个页面显示出来,完成每个页面中每个模块功能的网络请求的实现。通过对按钮点击事件的处理,以及页面之间的跳转,点,获取需要网络请求的参数并且联合网址URL,对网络数据的请求处理进行分类,对于数据接口返回的数据,使用NSJSON解析并将数据保存在字典中[15]。方便我们对于数据进行层层处理,并且根据请求方式不同改变参数。实现代码如下:
代码语言:javascript复制 NSMutableDictionary *mutDic=[NSMutableDictionary dictionaryWithCapacity:0];
if ([action isEqualToString:@"user"]) {
[mutDic setObject:pageNum forKey:@"userid"]; }else if ([action isEqualToString:@"phonenum"]){
[mutDic setObject:pageNum forKey:@"userphonenum"];
}
else if ([action isEqualToString:@"videoURL"]){
[mutDic setObject:pageNum forKey:@"videoid"];
} else if ([action isEqualToString:@"type"]){
[mutDic setObject:pageNum forKey:@"type"];
}
else if ([action isEqualToString:@"num"]){
[mutDic setObject:pageNum forKey:@"page"];
}
else if ([action isEqualToString:@"otherid"]){
[mutDic setObject:pageNum forKey:@"userid"];
}
NSString *urlstr=url;
//1.创建ADHTTPSESSIONMANGER对象
AFHTTPSessionManager *manager=[AFHTTPSessionManager manager];
//2.设置该对象返回类型
manager.responseSerializer=[AFJSONResponseSerializer serializer];
[manager POST:urlstr parameters:mutDic progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSDictionary *dic = responseObject;
success(dic);
}failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"----返回错误");
}];
2.网络数据解析 调用系统的类来对网络请求道德数据进行JSON解析,网络请求得到的数据保存在字典或者数组中,在根据所获得的数据属性遍历字典或者数组并且完成对数据的封装,实现添加好友、好友即时聊天、好友关注;以及针对需求文档和接口文档制作出原型图,并实现页面设计及交互设计,根据原型图进行每个页面的设计与实现,探讨分析37摄区软件的需求及功能要点,并总结归档;在对37摄区软件的需求及功能要点分析的基础上,根据首页、喜好、社区、我的等主要页面功能写出相应的接口,并总结成接口文档;制作出低保真原型图,并且实现简单的交互跳转等功能;低保真原型图,编码实现每个页面的所有功能,按照封装的Model类填充每个页面对应的控价的数据,并在静态页面上展示出来。实现代码如下:
代码语言:javascript复制NSUserDefaults *tokenid = [NSUserDefaults standardUserDefaults];
NSString *token = [tokenid objectForKey:@"tokenid"];
NSMutableDictionary *mutdic=[NSMutableDictionary dictionaryWithCapacity:0];
NSUserDefaults *gradeid = [NSUserDefaults standardUserDefaults];
NSString *grade = [gradeid objectForKey:@"gradeid"];
int intString = [grade intValue];
if (intString == 3) {
mutdic[@"token"] = @"f9d8b97d22164820992c2912d689111a";
}else{
mutdic[@"token"] = _salesmanStr;
}
//网络请求
FBYHomeService *service1 = [[FBYHomeService alloc]init];
[service1 searchMessage:nil andWithAction:nil andWithDic:mutdic andUrl:getSalesManList andSuccess:^(NSDictionary *dic) {
NSString *str = [NSString stringWithFormat:@"%@",[dic objectForKey:@"status
"]]; if ([str isEqualToString:[NSString stringWithFormat:@"0"]]) {
self.dataArr = [dic objectForKey:@"data"];
if ([_dataArr isEqual:[NSNull null]]) {
}else{ [self.myTable reloadData];
}
}
} andFailure:^(int fail) {
}];
5.2首页功能模块实现
首页页面即程序运行出来的主界面。主要进行短视频的视频信息的分区展示。上部有一个轮播图,主要展示和推荐的热门视频。整个界面是放在画布上面的,左右滑动,分别是收藏详情页面和分类详情页面,收藏详情页面主要展示,用户收藏的视频。分类详情页面主要是,对视频分的九大类,分别是:音乐、脱口秀、TV、科技、游戏、天文、电影、生活、搞笑九大类。首页界面截图如图5.1所示:
图5.1首页详情界面
代码语言:javascript复制self.myScrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 64, SCREEN_WIDTH, SCREEN_HEIGHT-49)];
self.myScrollView.backgroundColor = [UIColor whiteColor];
self.myScrollView.contentSize = CGSizeMake(SCREEN_WIDTH*3, SCREEN_HEIGHT-113);
[self.myScrollView setContentOffset:CGPointMake(SCREEN_WIDTH, 0) animated:NO];
[self.myScrollView addSubview:cvc.view];
self.layout = [[UICollectionViewFlowLayout alloc]init];
//设置布局方向为垂直流布局
self.layout.scrollDirection = UICollectionViewScrollDirectionVertical; self.layout.itemSize = CGSizeMake((SCREEN_WIDTH-30)/2, (SCREEN_WIDTH-30)*2/6 30);
self.layout.sectionInset = UIEdgeInsetsMake(0, 10, 0, 10);
self.collect = [[UICollectionView alloc]initWithFrame:CGRectMake(SCREEN_WIDTH, 44, SCREEN_WIDTH, SCREEN_HEIGHT-157) collectionViewLayout:_layout];
self.collect.backgroundColor = [UIColor whiteColor];
self.collect.showsVerticalScrollIndicator = NO;
self.collect.dataSource = self;
self.collect.delegate = self;
[self.collect registerClass:[MyCollectionViewCell class] forCellWithReuseIdentifier:@"cellid"];
[self.collect registerClass:[MyCollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"fby"];
self.collect.tag = 1002;
[self.myScrollView addSubview:_collect];
5.3喜好功能模块实现
喜好界面就是下面工具栏的第二个按钮控制的界面。这个页面主要是展示我的群组和我的关注,用户可以通过左右滑动或者点击我的群组按钮和我的关注按钮来实现对每个分类的查看,我的群组主要是,我添加的喜欢的视频讨论群等等,我的关注主要展示我关注的发帖人等等信息,导航栏右侧的按钮为添加好友按钮,点进去之后可以搜索好友或者群组,而且还可以创建群组,如图5.2所示:
图5.2喜好详情页面
代码语言:javascript复制//导航栏
MyNav *nav = [[MyNav alloc]initWithTitle:@"喜好" bgImg:nil leftBtn:@"envelopefinal" rightBtn:@"addfinal"];
[ nav.leftBtn addTarget:self action:@selector(leftaction:) forControlEvents:UIControlEventTouchUpInside];
[ nav.rightBtn addTarget:self action:@selector(rightaction:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:nav];
//画布
self.twoviewScl =[[UIScrollView alloc]initWithFrame:CGRectMake(0, 110, SCREEN_WIDHN, SCREEN_HEIGHT-160)];
self.twoviewScl.delegate=self;
self.twoviewScl.contentSize=CGSizeMake(SCREEN_WIDHN *2, SCREEN_HEIGHT-160);
[self.view addSubview:_twoviewScl];
self.twoviewScl.showsHorizontalScrollIndicator=NO;
self.twoviewScl.pagingEnabled=YES;
//我的关注界面
MyloveViewController *myloveview=[[MyloveViewController alloc]init];
[self addChildViewController:myloveview];
myloveview.view.frame=CGRectMake(SCREEN_WIDHN, 0, SCREEN_WIDHN, SCREEN_HEIGHT-160);
[self.twoviewScl addSubview:myloveview.view];
5.4上传功能模块实现
上传界面就是下面工具栏的第三个按钮控制的界面。这个页面主要是展示我的视频上传和帖子上传功能,用户可以通过进入相册选择图片或者视频上传到APP,也可以通过相机照相上传图片或者视频,图片有多张上传的功能,页面展示如图5.3所示:
图5.3上传详情页面
代码语言:javascript复制self.nav = [[FBYMyNav alloc]initWithTitle:@"上传" andWithByImg:@"NAV" andWithLetBtn1:@"backfby" andWithLeftBtn2:nil andWithRightBtn1:nil andWithRightBtn2:nil];
[self.nav.leftBtn1 addTarget:self action:@selector(next:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:_nav];
self.layout = [[UICollectionViewFlowLayout alloc]init];
//设置布局为垂直流布局
self.layout.scrollDirection = UICollectionViewScrollDirectionVertical;
//设置每个item的大小
self.layout.itemSize = CGSizeMake((SCREEN_WIDTH-3)/4, SCREEN_HEIGHT/6);
//设置上左下右的距离
self.layout.sectionInset = UIEdgeInsetsMake(1, 0, 0, 0);
//创建collectionview 通过一个布局策略layout来创建
self.collect = [[UICollectionView alloc]initWithFrame:CGRectMake(0, 64, SCREEN_WIDTH, SCREEN_HEIGHT-44) collectionViewLayout:_layout];
self.collect.backgroundColor = [UIColor colorWithRed:239/255.0 green:239/255.0 blue:239/255.0 alpha:239/255.0];
//代理设置
self.collect.dataSource = self;
self.collect.delegate = self;
//注册item 类型 这里使用系统的类型
[self.collect registerClass:[AddNewCollectionViewCell class] forCellWithReuseIdentifier:@"cellid"];
[self.collect registerClass:[AddNewCollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"fby"];
[self.view addSubview:_collect];
5.5社区功能模块实现
社区界面就是下面工具栏的第三个按钮控制的界面。这个页面主要是展示社区中朋友分享的视频,主要将视频分为创意分享、游戏杂谈、情感故事三个分类,可以点击中间的三个按钮观看详情,上部有一个轮播图,主要展示和推荐的热门视频。在导航栏下面有一个搜索框,可以在里面搜索你想观看的视频。页面展示如图5.4所示:
图5.4社区详情页面
代码语言:javascript复制//导航栏
MyNav *nav = [[MyNav alloc]initWithTitle:@"社区" bgImg:nil leftBtn:@"TZCollect" rightBtn:nil];
// nav.leftBtn
[nav.leftBtn addTarget:self action:@selector(myTZCollect) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:nav];
//tableView的headView
self.tableHead = [[UIView alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDHN, 310-64)];
//tableView
self.table = [[UITableView alloc]initWithFrame:CGRectMake(0, 64, SCREEN_WIDHN, [UIScreen mainScreen].bounds.size.height-113)];
self.table.tableHeaderView = _tableHead;
self.table.showsVerticalScrollIndicator = NO;
self.table.delegate = self;
self.table.dataSource = self;
[self.view addSubview:_table];
//搜索栏
self.searchBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDHN, 40)];
self.searchBar.delegate=self;
// self.searchBar.showsCancelButton=YES;
// self.searchBar.backgroundColor = [UIColor whiteColor];
[self.tableHead addSubview:_searchBar];
5.6我的功能模块实现
我的界面就是下面工具栏的第四个按钮控制的界面。这个页面主要是展示个人中心里面的,日记列表、剪辑工具、转gif、个人主页等功能。在上部可以注册登录APP,如果忘记密码,在登录页面可以点击忘记密码找回,登陆成功后可以点击头像进行修改头像,和别经图片。在上方的导航栏中,右侧的按钮是设置按钮,点击设置按钮可以看到,有清除缓存、联系我们、当前版本、核心组件、启动组件等内容。页面展示如图5.5所示:
图5.5我的详情页面
代码语言:javascript复制self.layout = [[UICollectionViewFlowLayout alloc]init];
self.layout.scrollDirection = UICollectionViewScrollDirectionVertical;
self.layout.itemSize = CGSizeMake((SCREEN_WIDTH-3)/4, SCREEN_HEIGHT/6);
self.layout.sectionInset = UIEdgeInsetsMake(1, 0, 0, 0);
//创建collectionView 通过一个布局策略layout来创建
self.collect = [[UICollectionView alloc]initWithFrame:CGRectMake(0, SCREEN_WIDTH*1/2 44, SCREEN_WIDTH, SCREEN_HEIGHT-SCREEN_WIDTH*1/2-93) collectionViewLayout:_layout];
self.collect.backgroundColor = [UIColor colorWithRed:239/255.0 green:239/255.0 blue:239/255.0 alpha:1];
//注册item类型 这里使用系统的类型
[self.collect registerClass:[FourthCollectionViewCell class] forCellWithReuseIdentifier:@"cellid"];
[self.collect registerClass:[FourthCollectionReusableView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"fby"];
// self.collect.layer.cornerRadius = 5;
[self.collect addSubview:_activityIndicator];
[self.view addSubview:_collect];
self.nav = [[FBYMyNav alloc]initWithTitle:@"我的" andWithByImg:@"NAV" andWithLetBtn1:nil andWithLeftBtn2:nil andWithRightBtn1:@"setup" andWithRightBtn2:nil];
[self.nav.rightBtn1 addTarget:self action:@selector(setup:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:_nav];
第6章 总结与展望
本课题是基于苹果平台开发的37秒短视频摄区应用,实现在移动设备上上传不超过37秒的视频和社交等功能。人们可以上传自己喜欢的视频或者分享收藏朋友的视频,可以在社区里面进行分享,包括即时聊天,看自己想要的视频信息,本项目可以通过九大分类来达到用户的需求,用户可以根据自己的喜好建立群组,在群组中探讨分享视频,通过网络和人们普遍使用的手机等通讯工具来度过自己的娱乐和休闲时间。 首先完成页面搜索视频、收藏视频、上传视频、播放视频等功;实现添加好友、好友即时聊天、好友关注;以及针对需求文档和接口文档制作出原型图,并实现页面设计及交互设计,根据原型图进行每个页面的设计与实现,探讨分析37摄区软件的需求及功能要点,实现添加好友、好友即时聊天、好友关注;以及针对需求文档和接口文档制作出原型图,并实现页面设计及交互设计,根据原型图进行每个页面的设计与实现,探讨分析视频播放器软件的需求及功能要点,并总结归档 在对37摄区软件的需求及功能要点分析的基础上,根据首页、喜好、社区、我的等主要页面功能写出相应的接口,并总结成接口文档;制作出低保真原型图,并且实现简单的交互跳转等功能;低保真原型图,编码实现每个页面的所有功能。37摄区视频播放器在播放视频时不能发送弹幕和在搜索视频时未采用模糊搜索,以及视频日记功能上,存在重复保存视频的问题。
参考文献
[1] Dave Mark, Jeff LaMarche. iPhone Development Foundation Course [M]. 北京: 人民邮电出版社. 2009. [2] Erica Sadun. iPhone开发秘籍(第2版) [M]. 北京: 人民邮电出版社. 2010. [3] 唐巧. iOS开发进阶[M]. 北京: 电子工业出版社. 2015. [4] Maurice Sharp, Erica Sadun, Rod Stro. Full use of iOS development [M]. 北京: 清华大学出版社. 2014. [5] 关东升. iOS开发指南(从零基础到APP Store上架第二版) [M]. 人民邮电出版社2014. [6] 克纳斯特, 马利克, 达尔林普尔. Objective-C基础教程[M]. 北京: 人民邮电出版社.2013. [7] 坂本一树, 古本智彦. Objectivr-CAdvanced programming[J]. 北京: 软件导刊. 2013. [8] 刘威. Objective-C编程之道: iOS设计模式解析[M]. 北京: 人民邮电出版社. 2011. [9] 张才千, 郭毅鹏, 李辛萌. iOS开发从入门到精通[M]. 北京: 北京希望电子出版社. 2014. [10] 李伟梦. iOS5编程入门经典(第三版)[M]. 北京: 清华大学出版社.2012. [11] 张超. 基于iOS平台播放器的设计与实现[D].河北师范大学.2014 [12] 曹森, 苏贵斌, 软件开发中的设计原则[J]. 软件导刊. 2012. [13] Matt Galloway52 effective ways to write high quality iOS and OSX code [M]. 机械工业出版社. 2016. [14] 詹新林. 基于架构的软件设计方法[D]. 上海师范大学. 2009. [15] 夏梦. 基于iOS的车联网手机客户端的设计与实现[D]. 南昌大学. 2014.
致谢
本课题在选题以及进行过程中都少不了指导老师的悉心指导,老师的指导让我对于毕业设计的迷茫消失了不少,他的工作精神,也是我以后工作学习的榜样。老师的帮助,使得我对于处理困难事情的能力提升了不少,在我内心里真的非常感谢。在此,谨向我的指导老师表示诚挚的感谢。 大学四年以来,有快乐也有艰辛。感谢学院全体老师对我们孜孜不倦的教诲,感谢班级同学们对我的关怀与帮助,四年感情,不是情亲,胜似亲情。我们一起走过很多快乐的日子,这是我十几年求学生涯中永远不会忘记的回忆。 大学生活即将随着论文的完成画上圆满的句号。感谢四年以来遇到的所有给我帮助和关注的朋友们,因为你们才有了今天成熟坚强,足以应对未来一切的考验。相信在未来的日子里,我一定会时时想起这些美好的日子,这也将会是我人生中一笔重要的财富。