CN107038219A - iOS中加载GIF动画的方法及装置 - Google Patents

iOS中加载GIF动画的方法及装置 Download PDF

Info

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
Application number
CN201710162010.9A
Other languages
English (en)
Other versions
CN107038219B (zh
Inventor
汪刚
张文明
陈少杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Douyu Network Technology Co Ltd
Original Assignee
Wuhan Douyu Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201710162010.9A priority Critical patent/CN107038219B/zh
Publication of CN107038219A publication Critical patent/CN107038219A/zh
Application granted granted Critical
Publication of CN107038219B publication Critical patent/CN107038219B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction 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/04845Interaction 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动画的方法及装置
技术领域
本发明涉及互联网移动端应用开发领域,具体是涉及一种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函数获取截图的大小;使用苹果的系统函数,获取当前界面的图像上下文;
截取子单元用于:截取网页界面的图层的图像;获得截取的图像;结束图像上下文。
CN201710162010.9A 2017-03-17 2017-03-17 iOS中加载GIF动画的方法及装置 Active CN107038219B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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应用体验的方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
时间已静止: "https://www.cnblogs.com/mddblog/p/5281748.html", 《HTTPS://WWW.CNBLOGS.COM/MDDBLOG/P/5281748.HTML》 *

Cited By (6)

* Cited by examiner, † Cited by third party
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