基于ios平台的视频播放器的设计与实现毕业设计论文(编辑修改稿)内容摘要:

gate 协议,代理提供了相关的生命周期方法来处理应用程序的系统事件 [9]。 ( 3) UIWindow UIWindow 是一种特殊的 UIView,通常在一个 app 中只会有一个 UIWindow ,但可以手动创建多个 UIWindow[10]。 UIWindow 的主要作用是 提 供 一 个 区 域 来 显 示 视 图 ; 将 事 件 分 发 给 视 图 控 制 器 ; 与UIViewController协调工作,方便完成设备方向旋转的支持。 ( 4) UIViewController UIViewController 属于 MVC 模型中的 C( Controller),说的具体点是它是一个视图控制器,管理着一个视图( UIView) [10]。 第 7 页 图 41 四大对象关系图 模式 系统中主要使用 MVC 模式, MVC 模式是 Apple iOS 开发需要遵循的设计模式 [11]。 它把一个页面分为三部分。 M 代表 Model,也就是模型,通常是一些模型类(例如 LDLModel 类),用于存储数据。 View 代表视图,用于显示数据。 C 代表控制器( Controller),用于控制 M 和 V 的同步和协调。 当数据改变的时候,要让视图显示更新的数据。 一个应用程序通常是多个这样的页面组成。 它的优点是: ( 1)低耦合性。 ( 2)重用性高。 ( 3)可维护性好。 在本系统中就应用了 MVC设计模式对代码进行封装和分离,具体 MVC结构模型图如图 42 所示: 第 8 页 图 42 MVC 模型关系图 第 9 页 5 系统实现 通过对系统实现需求的设计,我们大致了解我们开发所用的类、框架与模型。 就进入了真正的系统实现模块,首先我们要了解在开发过程中我们所用到的类与类之间的关系,方便开发。 然后根据我们需要实现的功能进行代码的封装,从而实现代码的复用与模块化。 UI即 User Interface(用户界面)的简称。 UI 设计是指对软件的人机交互、操作逻辑、界面美观的完整设计。 UI 处于 iOS 四层结构的最上层( Cocoa Touch),并且放置在 UIKit 框架下,它跟用户的操作息息相关,所以包含的控件也特别多 [12]。 子类与父类之间继承关系如图 511所示: 第 10 页 图 511 子类与父类之间继承图 在本课题的程序实现里面主要用到的控件大致如下: ( 1)显示类 ① UILabel 展示信息,在应用程序中主要用于展示视频信息等等。 第 11 页 ② UIButton 按钮,在应用程序中只要用于相应用户点击时间,比如点击“更多”按钮进入详情界面,点击“历史记录”按钮进入观看历史记录界面。 ③ UIAlertView 警告视图,在应用程序中主要用于展示删除的弹窗警告,给用户更好的体验,选择权在用户手中。 ④ UIView 视图,在应用程序中主要用于展示视频信息,并在视图上进行相应的操作。 ⑤ UINavigationBar 导航条,在界面上展示导航条的位置,方便我们根据导航控制器来控制界面跳转及操作。 ⑥ UITableView 表视图,在应用程序中主要在单元格上展示视频信息,设置信息等等。 ⑦ UICollectionView 集合视图,在应用程序的推荐界面和分类界面都是集合视图来展示分区信息。 ⑧ UIImageView 图片视图,在应用程序中有图片的展示信息都是加载在 UIImageView 视图之上的。 ⑨ UIScrollView 滚动视图,在应用程序主界面轮播图是使用UIScrollView 和 UIPageControl 控件实现的。 ⑩ UIWebView 网页视图,在应用程序中视频播放界面是 UIWebView加载实现的。 ( 2)功能类使用 ① NSDate 处理日期和时间,在应用程序中显示时间和刷新时间。 ② NSTimer 定时器,在应用程序中添加动画效果开始时间,添加定时器。 ③ NSURL 网络路径,在应用程序中封装网络路径。 ④ NSURLRequest 网络请求,在应用程序中设置一些网络的请求信息。 ⑤ NSError 在应用程序中使用到是用来接收网络请求中的错误信息。 ⑥ NSData 数据,在应用程序中把一些信息写入到文件里或发送到网络上 ,我们需要把这些数据转换下 ,变成纯粹的 0、 1 字符流使用到 NSData类。 第 12 页 ⑦ NSNotification 通知,在应用程序中用于界面传递信息,在播放界面和历史记录界面有使用到通知的发送和接收。 ⑧ NSJSONSerialization 数据解析,在应用程序中主要用于解析网络数据,主要分为 XML 和 JSON 解析,在应用程序中主要用到 JSON 解析数据。 ⑨ NSOperationQueue 队列 ,在应用程序中主要用于对对象进行队列操作。 应用程序是我们通过编码实现 UI 界面展示,响应并处理用户事件的最重要的一部分,几乎所有的功能实现都是基于代码的书写来完成的。 下面就应用程序的工作流程、编码实现进行介绍。 应用程序工作流程 应用程序是基于 iOS 技术开发实现的,根据需求,我们需要设计包含主界面以及很多的子类界面。 主界面有:推荐界面、分类界面、搜索界面、设置界面。 子类界面有分类详情界面、剧集选择界面、播放界面、历史记录界面等等。 主界面之间实现用户对视频信息的选择与展示,并响应用户点击事件。 例如:用户点击每个集合视图的 item 时可以跳转到模块分类详情界面;点击模块分类详情界面会跳转到视频信息详情界面,并选择剧集实现播放视频的功能。 主页面主要负责整个应用程序的视频信息,通过添加手势来实现与下级界面的交互,它的信息播放以及视频信息详情展示都由下级页面来完成。 整个界面看起来美观简洁,使得用户使用起来一目了然。 而且通过界面代码实现的复用,很好的降低代码冗余,使得程序运行更加流畅,占据内存空间更小。 根据上面的详细的介绍,我们大概有所了解客户端的整的整个流程。 客户端的流程图如 421 图所示 : 第 13 页 图 421 视频播放流程图 应用程序管理类 (1)管理类 LDLManager 在程序运行中很多地方要使用到网络数据处理,通过实现一次代码书写多处模块复用的功能,这就是 OC 语言封装的概念的具体体现。 下面的代码就是实现文件归档保存数据的方法的声明。 具体在需要用到将数据保存在本地的模块调用这个方法即可。 typedef enum { ModelPackageTypeRefresh,//刷新数据 ModelPackageTypeLoadingMore//加载更多 }ModelPackageType。 + (id)manager。 //沙盒存储 (NSString *)filePath:(NSString *)string。 //归档文件的保存路径 (void)save:(NSString *)string。 //保存数据到硬盘的方法 + (id)manager;方法是一个便利构造器方法,表明 manager 这个对象在程序运行过程中一直存在,不被销毁。 (NSString *)filePath:(NSString *)string。 //归档文件的保存路径 (void)save:(NSString *)string。 //保存数据到硬盘的方法 以上两个方法实现将数据保存在本地,归档保存,实现数据持久化。 ( 2) LDLBaseModel 类,继承自 NSObject 在数据处理时,很多时候网络接口返回的数据都是字典类型,声明一个字典的初始化以及便利构造器方法,使得在要将数据存储在字典里 第 14 页 时直接调用 LDLBaseModel 这个类封装的字典方法,避免使用一次就初始化一次,减少代码冗余。 封装方法字典保存数据,为之后网络数据解析与封装做铺垫,并且有利于代码的复用。 @interface LDLBaseModel : NSObject (id)initWithDictionary:(NSDictionary *)dictionary。 + (id)modelWithDictioanry:(NSDictionary *)dictionary。 (id)initWithDictionary:(NSDictionary *)dictionary { if (self = [super init]) { } return self。 } + (id)modelWithDictioanry:(NSDictionary *)dictionary { return [[[[self class] alloc] initWithDictionary:dictionary] autorelease]。 } @end 应用程序工具类 iOS中提供了一。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。