CN107038219A - iOS中加载GIF动画的方法及装置 - Google Patents
iOS中加载GIF动画的方法及装置 Download PDFInfo
- Publication number
- CN107038219A CN107038219A CN201710162010.9A CN201710162010A CN107038219A CN 107038219 A CN107038219 A CN 107038219A CN 201710162010 A CN201710162010 A CN 201710162010A CN 107038219 A CN107038219 A CN 107038219A
- Authority
- CN
- China
- Prior art keywords
- web interface
- image
- gif animations
- interception
- loaded
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9574—Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
- G06F3/04845—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range for image manipulation, e.g. dragging, rotation, expansion or change of colour
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Human Computer Interaction (AREA)
- Processing Or Creating Images (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明公开了一种iOS中加载GIF动画的方法及装置,涉及互联网移动端应用开发领域。该方法包括以下步骤:使用懒加载的方式,创建一个网页界面;在内存中创建一个手势,为创建的手势添加消息回调的对象;设置网页界面的显示大小和显示位置;将网页界面添加到当前的控制器;获取申请加载GIF动画的网络请求,读取存储在网络的GIF动画的统一资源定位符URL,通过URL加载GIF动画。本发明对加载的动画没有缓存,用完就释放内存,加载GIF动画时,不会引起内存暴增,避免系统崩溃。
Description
技术领域
本发明涉及互联网移动端应用开发领域,具体是涉及一种iOS中加载GIF动画的方法及装置。
背景技术
在互联网移动端的应用中,很多地方需要播放GIF(Graphics InterchangeFormat,图像互换格式)动画,iOS(苹果移动设备操作系统)开发中提供了一些加载GIF动画的方法,也有一些开源的框架提供了加载GIF动画的方法。
目前的主流方案中,GIF动画的加载播放方案一般是SDWebImage方案,即UIImageView直接加载GIF动画,这个方案最大的缺点是:加载的GIF动画超过200kb的时候,iOS进行动画渲染要占用200M以上的内存,容易引起内存暴增,导致系统崩溃。
发明内容
本发明的目的是为了克服上述背景技术的不足,提供一种iOS中加载GIF动画的方法及装置,对加载的动画没有缓存,用完就释放内存,加载GIF动画时,不会引起内存暴增,避免系统崩溃。
本发明提供一种iOS中加载GIF动画的方法,包括以下步骤:
A1、使用懒加载的方式,创建一个网页界面;在内存中创建一个手势,为创建的手势添加消息回调的对象;设置网页界面的显示大小和显示位置;
A2、将网页界面添加到当前的控制器;获取申请加载GIF动画的网络请求,读取存储在网络的GIF动画的统一资源定位符URL,通过URL加载GIF动画。
在上述技术方案的基础上,步骤A2之后还包括以下步骤:
B1、点击网页界面,触发手势操作,截取图像;创建一个和网页界面相同大小的图像对象,将截取的图像赋值给创建的图像对象;
B2、将图像对象显示出来,显示的内容是截取的网页界面区域的内容,同时隐藏播放动画的网页界面。
在上述技术方案的基础上,步骤B1中所述截取图像的流程如下:
a、使用苹果自带的.size函数获取截图的大小;使用苹果的系统函数,获取当前界面的图像上下文;
b、截取网页界面的图层的图像;获得截取的图像;结束图像上下文。
本发明还提供一种iOS中加载GIF动画的装置,该装置包括创建单元、加载单元,其中:
创建单元用于:使用懒加载的方式,创建一个网页界面;在内存中创建一个手势,为创建的手势添加消息回调的对象;设置网页界面的显示大小和显示位置;
加载单元用于:将网页界面添加到当前的控制器;获取申请加载GIF动画的网络请求,读取存储在网络的GIF动画的统一资源定位符URL,通过URL加载GIF动画。
在上述技术方案的基础上,该装置还包括截取单元、显示单元、隐藏单元,其中:
截取单元用于:点击网页界面,触发手势操作,截取图像;创建一个和网页界面相同大小的图像对象,将截取的图像赋值给创建的图像对象;
显示单元用于:将图像对象显示出来,显示的内容是截取的网页界面区域的内容;
隐藏单元用于:隐藏播放动画的网页界面。
在上述技术方案的基础上,所述截取单元包括获取子单元、截取子单元,其中:
获取子单元用于:使用苹果自带的.size函数获取截图的大小;使用苹果的系统函数,获取当前界面的图像上下文;
截取子单元用于:截取网页界面的图层的图像;获得截取的图像;结束图像上下文。
与现有技术相比,本发明的优点如下:
(1)本发明采用UIWebView方案取代传统的SDWebImage方案,UIWebView方案为:使用懒加载的方式,创建一个网页界面;在内存中创建一个手势,为创建的手势添加消息回调的对象;设置网页界面的显示大小和显示位置;将网页界面添加到当前的控制器;获取申请加载GIF动画的网络请求,读取存储在网络的GIF动画的统一资源定位符URL,通过URL加载GIF动画。UIWebView方案对加载的动画没有缓存,用完就释放内存,加载GIF动画时,不会引起内存暴增,避免系统崩溃。
(2)某些项目中有一些需求需要停止GIF动画的播放,下一次又可以继续播放GIF动画,目前为止还没有提供可以停止GIF播放的解决方案。为了解决GIF动画无法实现暂停播放的问题,本发明点击网页界面,触发手势操作,截取图像;创建一个和网页界面相同大小的图像对象,将截取的图像赋值给创建的图像对象;将图像对象显示出来,显示的内容是截取的网页界面区域的内容,同时隐藏播放动画的网页界面。本发明通过先获得截图,再将截图的内容显示出来,隐藏播放动画的网页界面UIWebView,将一个GIF动画变成了一个静态的图像,达到GIF动画暂停播放的视觉效果。
附图说明
图1是本发明实施例中iOS中加载GIF动画的方法的流程图。
图2是本发明实施例中暂停播放GIF动画的流程图。
图3是本发明实施例中截取图像的流程图。
具体实施方式
下面结合附图及具体实施例对本发明作进一步的详细描述。
参见图1所示,本发明实施例提供一种iOS中加载GIF动画的方法,包括以下步骤:
A1、使用懒加载的方式,创建一个网页界面;在内存中创建一个手势,为创建的手势添加消息回调的对象;设置网页界面的显示大小和显示位置;
A2、将网页界面添加到当前的控制器;获取申请加载GIF动画的网络请求,读取存储在网络的GIF动画的统一资源定位符URL,通过URL加载GIF动画。
参见图2所示,步骤A2之后还可以包括以下步骤:
B1、点击网页界面,触发手势操作,截取图像;创建一个和网页界面相同大小的图像对象,将截取的图像赋值给创建的图像对象;
B2、将图像对象显示出来,显示的内容是截取的网页界面区域的内容,同时隐藏播放动画的网页界面。
参见图3所示,步骤B1中所述截取图像的流程如下:
a、使用苹果自带的.size函数获取截图的大小;使用苹果的系统函数,获取当前界面的图像上下文;
b、截取网页界面的图层的图像;获得截取的图像;结束图像上下文。
本发明实施例还提供一种iOS中加载GIF动画的装置,该装置包括创建单元、加载单元,其中:
创建单元用于:使用懒加载的方式,创建一个网页界面;在内存中创建一个手势,为创建的手势添加消息回调的对象;设置网页界面的显示大小和显示位置;
加载单元用于:将网页界面添加到当前的控制器;获取申请加载GIF动画的网络请求,读取存储在网络的GIF动画的统一资源定位符URL,通过URL加载GIF动画。
该装置还可以包括截取单元、显示单元、隐藏单元,其中:
截取单元用于:点击网页界面,触发手势操作,截取图像;创建一个和网页界面相同大小的图像对象,将截取的图像赋值给创建的图像对象;
显示单元用于:将图像对象显示出来,显示的内容是截取的网页界面区域的内容;
隐藏单元用于:隐藏播放动画的网页界面。
截取单元包括获取子单元、截取子单元,其中:
获取子单元用于:使用苹果自带的.size函数获取截图的大小;使用苹果的系统函数,获取当前界面的图像上下文;
截取子单元用于:截取网页界面的图层的图像;获得截取的图像;结束图像上下文。
下面结合具体程序代码进行详细说明。
实施例1、
加载GIF动画的过程如下:
S101、使用懒加载的方式,创建一个网页界面UIWebView,该网页界面的名称是webView;
S102、使用函数[[UITapGestureRecognizer alloc]initWithTarget:selfaction:@selector(webViewTap:)],该函数右边[UITapGestureRecognizer alloc]执行的是:在内存中创建一个手势,initWithTarget函数执行的是:为创建的手势添加消息回调的对象,这个语句中的self代表添加的回调在哪个控制器执行,@selector(webViewTap:)是函数webViewTap方法选择器,也就是执行一个回调函数的过程,上述函数执行完毕会有一个对象UITapGestureRecognizer*gesture,这个对象的类型是UITapGestureRecognizer*,即一个手势对象上述过程完成了为网页界面webView添加手势,同时使用函数语句[webView addGestureRecognizer:gesture],将手势添加到网页界面webView上,其中addGestureRecognizer是添加手势的函数,gesture是上述函数执行完毕返回的对象;
S103、设置网页界面webView的显示大小和显示位置;
S104、使用函数语句[self.view addSubview:_webView],将网页界面webView添加到当前的控制器,其中addSubview函数是代表添加控件的函数,self.view是指当前控制器的view,该函数的意思是将网页界面webView添加到当前控制器的view上;
S105、[NSURLRequest requestWithURL:url]语句requestWithURL是一个获取一个请求的函数,这个请求函数返回是一个申请加载GIF动画的网络请求request,request是一个请求对象,包含一个申请加载GIF动画的网络请求的URL(Uniform Resource Locator,统一资源定位符)等信息,还有和其他的网络请求有关的信息,[self.webViewloadRequest:request];使用函数loadRequest去读取网络请求request,即去读取存储在网络的GIF动画的URL,GIF动画存储在网络上,会给客户端一个URL,APP(APPlication,应用)通过URL加载GIF动画。
实施例2、
在实施例1的基础上,暂停播放GIF动画的过程如下:
S201、点击网页界面webView,触发手势操作,截取图像;
调用-(void)webViewTap:(UITapGestureRecognizer*)recognizer函数,该函数没有返回值,返回值是void,该函数有一个参数recognizer,这个参数的类型是UITapGestureRecognizer,recognizer代表一个手势,这个手势中包含有和手势相关的信息,这个函数调用stopPalyGIF函数,stopPalyGIF函数的编写过程是:
S201a、使用苹果自带的.size函数CGSize webSize=self.webView.size,获取截图的大小,这个截图的大小是webSize,其中,self.webView是指去加载GIF动画的网页界面webView,.size语法是一个点语法,它的函数意义是获取这个网页界面webView的size,size即宽和高;
S201b、使用苹果的系统函数,获取当前界面的图像上下文;
UIGraphicsBeginImageContext(webSize)函数需要步骤S201a获得的截图大小webSize,UIGraphicsBeginImageContext函数的作用是获取websize指定区域大小的上下文对象;
S201c、截取网页界面webView的图层的图像,[self.webView.layerrenderInContext:UIGraphicsGetCurrentContext(),其中,UIGraphicsGetCurrentContext()是步骤S201b中的上下文对象,上下文是苹果客户端绘制图层相关的,self.webView.layer指获取当前网页界面webView的图层,renderInContext的含义是:将上下文对象绘制到图层上,本处的含义是将获得的上下文对象渲染在网页界面webView的图层上;
S201d、获得截取的图像,使用函数UIImage*image=UIGraphicsGetImageFromCurrentImageContext(),其中,image是一个变量,用于存储图像,UIGraphicsGetImageFromCurrentImageContext()函数是根据图像的上下文获得一个图像;
S201e、结束图像上下文,调用UIGraphicsEndImageContext()函数,此处之所以结束上下文,是因为结束上下文可以释放一些内存;
S202、创建一个和网页界面UIWebView相同大小的图像对象:UIImageView类型的图像对象imageContent,将步骤S201中截取的图像赋值给创建的图像对象imageContent;
S203、将图像对象imageContent显示出来,显示的内容是截取的网页界面UIWebView区域的内容,同时隐藏播放动画的网页界面webView。
本发明实施例解决了两个目前iOS开发中存在的2个问题:
(1)目前主流的GIF动画加载使用SDWebImage方案,缺点是超过200kb的GIF动画加载,使用暴力测试,会导致app崩溃;本发明实施例使用UIWebView方案加载GIF动画,由于没有使用缓存,内存能够得到及时的释放,不存在内存暴涨的问题。
(2)为了解决GIF动画无法实现暂停播放的问题,本发明实施例使用截屏技术,加载截屏的图片并显示,让播放动画的网页界面UIWebView隐藏起来,将一个GIF动画变成了一个静态的图像,达到GIF动画暂停播放的视觉效果。
本领域的技术人员可以对本发明实施例进行各种修改和变型,倘若这些修改和变型在本发明权利要求及其等同技术的范围之内,则这些修改和变型也在本发明的保护范围之内。
说明书中未详细描述的内容为本领域技术人员公知的现有技术。
Claims (6)
1.一种iOS中加载GIF动画的方法,其特征在于,包括以下步骤:
A1、使用懒加载的方式,创建一个网页界面;在内存中创建一个手势,为创建的手势添加消息回调的对象;设置网页界面的显示大小和显示位置;
A2、将网页界面添加到当前的控制器;获取申请加载GIF动画的网络请求,读取存储在网络的GIF动画的统一资源定位符URL,通过URL加载GIF动画。
2.如权利要求1所述的iOS中加载GIF动画的方法,其特征在于:步骤A2之后还包括以下步骤:
B1、点击网页界面,触发手势操作,截取图像;创建一个和网页界面相同大小的图像对象,将截取的图像赋值给创建的图像对象;
B2、将图像对象显示出来,显示的内容是截取的网页界面区域的内容,同时隐藏播放动画的网页界面。
3.如权利要求2所述的iOS中加载GIF动画的方法,其特征在于:步骤B1中所述截取图像的流程如下:
a、使用苹果自带的.size函数获取截图的大小;使用苹果的系统函数,获取当前界面的图像上下文;
b、截取网页界面的图层的图像;获得截取的图像;结束图像上下文。
4.一种iOS中加载GIF动画的装置,其特征在于:该装置包括创建单元、加载单元,其中:
创建单元用于:使用懒加载的方式,创建一个网页界面;在内存中创建一个手势,为创建的手势添加消息回调的对象;设置网页界面的显示大小和显示位置;
加载单元用于:将网页界面添加到当前的控制器;获取申请加载GIF动画的网络请求,读取存储在网络的GIF动画的统一资源定位符URL,通过URL加载GIF动画。
5.如权利要求4所述的iOS中加载GIF动画的装置,其特征在于:该装置还包括截取单元、显示单元、隐藏单元,其中:
截取单元用于:点击网页界面,触发手势操作,截取图像;创建一个和网页界面相同大小的图像对象,将截取的图像赋值给创建的图像对象;
显示单元用于:将图像对象显示出来,显示的内容是截取的网页界面区域的内容;
隐藏单元用于:隐藏播放动画的网页界面。
6.如权利要求5所述的iOS中加载GIF动画的装置,其特征在于:所述截取单元包括获取子单元、截取子单元,其中:
获取子单元用于:使用苹果自带的.size函数获取截图的大小;使用苹果的系统函数,获取当前界面的图像上下文;
截取子单元用于:截取网页界面的图层的图像;获得截取的图像;结束图像上下文。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710162010.9A CN107038219B (zh) | 2017-03-17 | 2017-03-17 | iOS中加载GIF动画的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710162010.9A CN107038219B (zh) | 2017-03-17 | 2017-03-17 | iOS中加载GIF动画的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107038219A true CN107038219A (zh) | 2017-08-11 |
CN107038219B CN107038219B (zh) | 2019-03-15 |
Family
ID=59534468
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710162010.9A Active CN107038219B (zh) | 2017-03-17 | 2017-03-17 | iOS中加载GIF动画的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107038219B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109298905A (zh) * | 2018-08-15 | 2019-02-01 | 深圳点猫科技有限公司 | 利用前端编程语言优化图片懒加载的方法以及电子设备 |
CN109426499A (zh) * | 2017-08-30 | 2019-03-05 | 武汉斗鱼网络科技有限公司 | 一种web页面扩充方法及装置 |
CN110311968A (zh) * | 2019-06-26 | 2019-10-08 | 北京小米移动软件有限公司 | 流式加载文件的方法、装置及智能设备 |
CN111443977A (zh) * | 2020-04-14 | 2020-07-24 | 重庆赋比兴科技有限公司 | 基于iOS的自定义转场方法 |
CN111475245A (zh) * | 2020-04-08 | 2020-07-31 | 腾讯科技(深圳)有限公司 | 动态图片显示方法、装置、电子设备及计算机存储介质 |
CN112422692A (zh) * | 2020-11-23 | 2021-02-26 | 平安普惠企业管理有限公司 | 一种网络请求方法及相关装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150095765A1 (en) * | 2012-06-11 | 2015-04-02 | Tencent Technology (Shenzhen) Company Limited | Method and device for offline webpage browsing, and computer storage medium |
CN105183471A (zh) * | 2015-09-06 | 2015-12-23 | 浪潮软件股份有限公司 | 一种基于ios多uiviewcontroller提升hybrid应用体验的方法 |
-
2017
- 2017-03-17 CN CN201710162010.9A patent/CN107038219B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150095765A1 (en) * | 2012-06-11 | 2015-04-02 | Tencent Technology (Shenzhen) Company Limited | Method and device for offline webpage browsing, and computer storage medium |
CN105183471A (zh) * | 2015-09-06 | 2015-12-23 | 浪潮软件股份有限公司 | 一种基于ios多uiviewcontroller提升hybrid应用体验的方法 |
Non-Patent Citations (1)
Title |
---|
时间已静止: "https://www.cnblogs.com/mddblog/p/5281748.html", 《HTTPS://WWW.CNBLOGS.COM/MDDBLOG/P/5281748.HTML》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109426499A (zh) * | 2017-08-30 | 2019-03-05 | 武汉斗鱼网络科技有限公司 | 一种web页面扩充方法及装置 |
CN109298905A (zh) * | 2018-08-15 | 2019-02-01 | 深圳点猫科技有限公司 | 利用前端编程语言优化图片懒加载的方法以及电子设备 |
CN110311968A (zh) * | 2019-06-26 | 2019-10-08 | 北京小米移动软件有限公司 | 流式加载文件的方法、装置及智能设备 |
CN111475245A (zh) * | 2020-04-08 | 2020-07-31 | 腾讯科技(深圳)有限公司 | 动态图片显示方法、装置、电子设备及计算机存储介质 |
CN111443977A (zh) * | 2020-04-14 | 2020-07-24 | 重庆赋比兴科技有限公司 | 基于iOS的自定义转场方法 |
CN112422692A (zh) * | 2020-11-23 | 2021-02-26 | 平安普惠企业管理有限公司 | 一种网络请求方法及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107038219B (zh) | 2019-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107038219A (zh) | iOS中加载GIF动画的方法及装置 | |
CN109032738B (zh) | 多媒体播放控制方法、装置、终端及存储介质 | |
CN108066986B (zh) | 一种流媒体确定方法及装置和存储介质 | |
CN103853417B (zh) | 网络动态图片的滚动分页显示方法和装置 | |
US8516041B1 (en) | Pre-fetching asynchronously requested content | |
CN109144649A (zh) | 图标的显示方法、装置、终端及存储介质 | |
CN109600408A (zh) | 资源分享方法、装置、存储介质和计算机设备 | |
CN103514179A (zh) | 网络浏览器切换历史网页的方法及网络浏览器 | |
CN103970760B (zh) | 一种网页请求处理方法及装置 | |
CN105930467A (zh) | 一种信息处理方法及电子设备 | |
US20190230311A1 (en) | Video interface display method and apparatus | |
CN104243668A (zh) | 一种基于安卓操作系统的视频全屏播放方法及装置 | |
CN104915186B (zh) | 一种制作页面的方法和装置 | |
US20220032192A1 (en) | User interface processing method and device | |
CN107844352A (zh) | 一种应用界面配置方法和装置 | |
CN104461298B (zh) | 一种截图方法和截图工具 | |
CN102982159A (zh) | 一种三维网页多场景快速切换方法 | |
US20080134144A1 (en) | Application retargeting | |
CN102799425A (zh) | 一种网页图形动画实现方法及装置 | |
CN103605549A (zh) | 一种界面退出展示方法及装置 | |
CN103761253A (zh) | 漫画显示系统和漫画显示方法 | |
CN110007831B (zh) | 一种翻页控制方法、装置及终端设备 | |
CN109343770B (zh) | 交互反馈方法、设备和记录介质 | |
CN103530023A (zh) | 发布信息的处理方法及系统、客户端 | |
CN110209964A (zh) | 一种页面显示方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |