ios发的gif图不动_怎么暂停gif

ios发的gif图不动_怎么暂停gif其实网上GitHub有很多第三方的,但是用起来比较麻烦,这里介绍最简单的一种方式,自己就可以实现,(点击按钮开始播放动态图)1,集成SDWebImage之后,引入头文件#import"U

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

其实网上GitHub有很多第三方的,但是用起来比较麻烦,这里介绍最简单的一种方式,自己就可以实现,(点击按钮开始播放动态图)

 

1,集成SDWebImage之后,引入头文件#import “UIImage+GIF.h”

2.初始化按钮,(loadingImageView是定义的全局的UIImageView,自己定义下)

   

 self.loadingImageView= [[UIImageView alloc]init];
    UIButton* btn=[[UIButton alloc]initWithFrame:CGRectMake(0, 100, 50, 20)];
    btn.backgroundColor=[UIColor redColor];
    [self.view addSubview:btn];
    ;

  

3.点击按钮就可以实现了,非常简单

- (void)initLoadingImageView
{
    
    NSString  *name = @"图片的名字.gif";
    NSString  *filePath = [[NSBundle bundleWithPath:[[NSBundle mainBundle] bundlePath]] pathForResource:name ofType:nil];
    NSData  *imageData = [NSData dataWithContentsOfFile:filePath];
    
    if (!self.loadingImageView) {
        self.loadingImageView = [[UIImageView alloc]init];
    }
    self.loadingImageView.backgroundColor = [UIColor clearColor];
    
    self.loadingImageView.image = [UIImage sd_animatedGIFWithData:imageData];

//这里可以修改要实现播放的gif的frame
    self.loadingImageView.frame = CGRectMake(0, 100, 200, 100);
    
    [self.view addSubview:self.loadingImageView];
    
    [self.view bringSubviewToFront:self.loadingImageView];
    
}

 

如果想实现gif图片的暂停和继续播放的功能加入以下两个方法就可以了

1.首先再viewDidLoad加入这个(player是CALayer类型的,定义为全局的)

//    设置imageView的layer
    player = self.loadingImageView.layer;

 

2.实现这两个方法,需要用哪个就点击哪个直接把player传过去就可以了

//暂停gif的方法

-(void)pauseLayer:(CALayer*)layer
{
    CFTimeInterval pausedTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil];
    layer.speed = 0.0;
    layer.timeOffset = pausedTime;
}

//继续gif的方法
-(void)resumeLayer:(CALayer*)layer
{
    CFTimeInterval pausedTime = [layer timeOffset];
    layer.speed = 1.0;
    layer.timeOffset = 0.0;
    layer.beginTime = 0.0;
    CFTimeInterval timeSincePause = [layer convertTime:CACurrentMediaTime() fromLayer:nil] -    pausedTime;
    layer.beginTime = timeSincePause;
}

  

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/167749.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 各种有趣vbs,bat脚本[通俗易懂]

    各种有趣vbs,bat脚本[通俗易懂]短信轰炸.vbs门罗币挖矿.vbs开机自启.vbs开3389+非net创建管理用户+Shift后门+自删除脚本.vbs去密码.vbs清除3389远程桌面连接痕迹.bat清除日志.bat

    2022年8月5日
    7
  • es6数组方法find()、findIndex()与filter()的总结

    es6数组方法find()、findIndex()与filter()的总结find()该方法主要应用于查找第一个符合条件的数组元素。它的参数是一个回调函数。在回调函数中可以写你要查找元素的条件,当条件成立为true时,返回该元素。如果没有符合条件的元素,返回值为undefined。以下代码在myArr数组中查找元素值大于4的元素,找到后立即返回。返回的结果为查找到的元素:constmyArr=[1,2,3,4,5,6];varv=myArr.find(value=>value>4);console.log(v);//5没有符合元素,返回undefi

    2022年5月29日
    78
  • nginx主从热备(nginx热备方案)

    转载自:http://www.fairysoftware.com/nginx_shuang_ji_re_bei.html(未亲测) 用Nginx实现双机热备,实现高可用,解决Nginx服务器的单点故障问题。架构原理1、双机均正常工作。用户通过域名访问到DNS域名解析时,通过轮询的方式计算虚拟IP。获取对应的nginx服务器。进行请求转发操作2、当其中的一台机器宕机之后,keepali…

    2022年4月10日
    240
  • C#用什么开发_hbase写数据流程

    C#用什么开发_hbase写数据流程最近公司程序需要嵌入各个浏览器的插件。首先

    2025年5月28日
    0
  • C++ 单例模式_c 单例模式

    C++ 单例模式_c 单例模式原创文章,转载请注明出处。本文主要从单例的用处以及问题所做介绍

    2025年6月12日
    2
  • 《天下强汉》3、强汉骄子,双星闪耀——卫青霍去病的华美人生[通俗易懂]

    《天下强汉》3、强汉骄子,双星闪耀——卫青霍去病的华美人生[通俗易懂]【档案】  姓名:卫青,字仲卿;霍去病,号嫖姚  生卒:卫青,约公元前157年—公元前106年;霍去病,公元前141年—公元前117年  性别:男  籍贯:河东平阳人(今山西临汾市西南)  家庭出身:私生子、奴隶(卫青);外戚(霍去病)  学历:无师自通的军事天才  相貌:疏眉朗目,高大俊美,英武矫健  秘密武器:武刚车  经典战役:龙城之战,雁门之战,河南之战,突袭右贤王之战,漠南之战,河西之战…

    2022年5月11日
    116

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号