UIImageView帧动画

IOS 学习笔记 UIImageView创建帧动画 本篇文章记录的是学习帧动画的笔记 目录 1 帧动画 2 动画资源准备 2.1 Assets.xcassets目录中添加图片资源 2.2Main.storyboard布局 2.3 UIButton添加点击事件 2.4 点击事件 2.5 动画资源 2.6 动画播放代码讲解 1 帧动画 所谓帧动画就是将一个序列的一组图片按顺序在一定时间内播放所展示出来的视觉效果。 ... 阅读详情

我们在使用UIImageView帧动画时会碰到加载到内存的图片不会自动释放,占用很多的内存,这时我们可能使用 UIImage imageWithContentsOfFile 并配合 imageView.animationImages = nil; 来清理不用的缓存动画图片。具体如下:

UIImageView帧动画相关属性和方法:

需要播放的序列帧图片数组(里面都是UIImage对象,会按顺序显示里面的图片)

@property(nonatomic,copy) NSArray *animationImages;

帧动画的持续时间

@property(nonatomic) NSTimeInterval animationDuration;

帧动画的执行次数(默认是无限循环)

@property(nonatomic) NSInteger animationRepeatCount;

开始执行帧动画

- (void)startAnimating;

停止执行帧动画

- (void)stopAnimating;

是否正在执行帧动画

- (BOOL)isAnimating;

例:加载动画图片的方式

// 1.加载所有的动画图片

- (void)runAnimationWithCount:(int)count name:(NSString *)name

{

if (self.imageView.isAnimating) return;

// 1.加载所有的动画图片

NSMutableArray *images = [NSMutableArray array];

for (int i = 0; i

// 计算文件名

NSString *filename = [NSString stringWithFormat:@"%@_d.jpg", name, i];

// 加载图片

// imageNamed: 有内存缓存直到程序退出才释放(传入文件名)

// UIImage *image = [UIImage imageNamed:filename];

// imageWithContentsOfFile: 没有缓存,自动释放(传入文件的全路径)

NSBundle *bundle = [NSBundle mainBundle];

NSString *path = [bundle pathForResource:filename ofType:nil];

UIImage *image = [UIImage imageWithContentsOfFile:path];

// 添加图片到数组中

[images addObject:image];

}

self.imageView.animationImages = images;

// 2.设置播放次数(1次)

self.imageView.animationRepeatCount = 1;

// 3.设置播放时间

self.imageView.animationDuration = images.count * 0.05;

[self.imageViewstartAnimating];

// 4.动画放完1秒后清除内存

CGFloat delay = self.tom.animationDuration;

[self.tom performSelector:@selector(setAnimationImages:) withObject:nil afterDelay:delay];

}




- ( IBAction )onButtonClickHandler:( id )sender {

    

    UIImageView *heartImageView = [[UIImageViewalloc]initWithFrame:CGRectMake(100.0, 100.0, 50.0, 50.0)];

    [self.view addSubview:heartImageView];

    NSMutableArray *images = [[NSMutableArrayalloc]initWithCapacity:7];

    for (int i=1; i<=7; i++) {

        [images addObject:[UIImageimageNamed:[NSStringstringWithFormat:@"xxx%d.png",i]]];

    }

    

    heartImageView.animationImages = images;

    heartImageView.animationDuration = 0.4 ;

    heartImageView.animationRepeatCount = 1;

    [heartImageView startAnimating];

    [NSTimer scheduledTimerWithTimeInterval:heartImageView.animationDuration

                                     target:self

                                   selector:@selector(onFrameAnimationFinished:)

                                   userInfo:heartImageView

                                    repeats:NO];

}





- (void)onFrameAnimationFinished:(NSTimer *)timer{

    UIImageView * imageView = (UIImageView *)[timeruserInfo];

    [imageView removeFromSuperview];

}


UIImageView帧动画的使用以及缓存的问题

  (2015-02-24 13:57:18)
标签: 

ios

 

mainbundle

 

nsbundle

 

uiimageview

 

缓存

分类: ios开发

//播放动画 

- (void)runAnimationWithCount:(int)count name:(NSString *)name

{

    if (self.tom.isAnimating) return;

    

    // 1.加载所有的动画图片

    NSMutableArray *images = [NSMutableArray array];

    

    for (int i = 0; i

        // 计算文件名

        NSString *filename = [NSString stringWithFormat:@"%@_d.jpg", name, i];

        // 加载图片

        //缓存就是

        // imageNamed: 有缓存机制(传入文件名);好处是快,坏处就是占内存

//        UIImage *image = [UIImage imageNamed:filename];

        

        // imageWithContentsOfFile: 没有缓存(传入文件的全路径)

        NSBundle *bundle = [NSBundle mainBundle];

        NSString *path = [bundle pathForResource:filename ofType:nil];

        UIImage *image = [UIImage imageWithContentsOfFile:path];

        

        // 添加图片到数组中

        [images addObject:image];

    }

    self.tom.animationImages = images;

    

    // 2.设置播放次数(1次)

    self.tom.animationRepeatCount = 1;

    

    // 3.设置播放时间

    self.tom.animationDuration = images.count * 0.05;

    

    [self.tom startAnimating];

    

    // 4.动画放完1秒后清除内存

    CGFloat delay = self.tom.animationDuration + 1.0;

    [self.tom performSelector:@selector(setAnimationImages:) withObject:nil afterDelay:delay];

//    [self performSelector:@selector(clearCache) withObject:nil afterDelay:delay];

}

//- (void)clearCache

//{

////    self.tom.animationImages = nil;

//    

//    [self.tom setAnimationImages:nil];

//}


ios-UIImageView帧动画.zip UIImageView帧动画 立即下载

相关推荐

电力电子技术(13)——大功率可控整流电路

目录引言2.6.1 带平衡电抗器的双反星形可控整流电路电路结构的特点接平衡电抗器的原因平衡电抗器使得两组三相半波整流电路同时导电的原理分析谐波分析2.6.2 多重化整流电路概述原理目标1)移相多重联结2)多重联结电路的顺序控制3重晶闸管整流桥顺序控制带平衡电抗器的双反星形可控整流电路(是多重化整流电路的重要形式之一)的特点:适用于低电压、大电流的场合。多重化整流电路的特点:绕组的极性相反的目的:消除直流磁通势如图所示,虽然两组相电流的瞬时值不同,但是平均电流相等而绕组的极性相反,所以直流安匝(电流*匝数)互

weixin_45589295的博客 1万+

UIImageView帧动画清除缓存图片,防止图片占用内存太多

我们在使用UIImageView帧动画时会碰到加载到内存的图片不会自动释放,占用很多的内存,这时我们可能使用 UIImage imageWithContentsOfFile 并配合 imageView.animationImages = nil; 来清理不用的缓存动画图片。具体如下: UIImageView帧动画相关属性和方法: 需要播放的序列帧图片数组(里面都是UIImage对象,会

zhangping871的专栏 4872

Linux【实战】—— LAMP环境搭建 & 部署网站

由LinuxApacheMySQLPHP组成的一个web网络平台。

2201_75935630的博客 4980

imageview清空缓存状态

调用 imageview.refreshDrawableState();清除之前加载过的图片缓存

betterAndroider的博客 5379

数据科学常见模型总结(二)-倾向性得分匹配模型

PSM的核心思想是从未受干预的用户群体中,找到和干预对象一模一样的用户,这样就可以把因果效应归因到干预上。

wudelong0112的专栏 4888

一份针对零基础学习AI Agent详细学习计划

以下是针对零基础学习者制定的AI Agent详细学习计划,结合最新行业动态和实用资源推荐,帮助你从入门到进阶系统掌握核心技能

sexy19910923的博客 1904

UIImageView 序列帧动画的实现以及内存的优化

最近笔者项目中又一次遇到了UIImageView的序列帧动画,各种百度,为了不让下一次遇到序列帧动画的时候还需要百度,也为了让后来查资料的人有一个系统的理解,我准备将这些百度来的资料以及自己的理解写成一个demo供大家参考学习; UIImageView动图三种实现方式: 实现方式一: SDWebImage实现 接到需求最初的想法就是用第三方来实现播放动画gif动画了;用SDWebImage来实现g...

weixin_33916256的博客 396

【代码】获取高级行情数据,并通过 qmt 进行实际下单交易,自动实现止盈止损管理

【代码】获取高级行情数据,并通过 qmt 进行实际下单交易,自动实现止盈止损管理

XD1996CD的博客 4108

使用SDImage设置图片的情况下,置空图片的时候不能使用imageView.image = nil.需要使用sd_image 使用一个空的图片URL清空

首先查看设置图片的方法 [self.imageView sd_setImageWithURL:[NSURL URLWithString:self.imageUrl] placeholderImage:self.defaultImage options:options progress:nil completed:nil]; 如果没有URL则将图片置空, self.image = nil; 后来发现这样置空图片是不行的,会导致重用的时候发生错误 ,没有图片的时候展示原来的图片 争取的做法是 置空: [self

liubo的博客 485

Windowns下Git环境配置-命令行方式

文章目录一、配置Git1.1 下载Git并安装1.2 配置本地Git用户名和邮箱1.3 注册GitHub二、生成本地公钥,放到GitHub上-SSH Key2.1 生成本地公钥命令2.2 查看生成的公钥2.3 在GitHub放上公钥并测试连通性三、创建项目实操四、可能出现的问题4.1.push不成功4.2.提示SSL的问题4.3.域名不能解析的问题4.4.如果github连接不上的问题 一、配置Git 1.1 下载Git并安装 Git官网 默认安装,根据需要修改安装路径 1.2 配置本地Git用户名和邮箱

学习工作笔记 1135

三极管稳压电路仿真分析

Z1的负极连接到三极管的基极,三极管发射极E是输出,形成了一个射极跟随器,也就是说,E极的电压随着B电压变化而变化,但BE之间有一个压降,一般硅管0.7V左右,假设B极是6.7V,那E极就是6.7-0.7=6V,所以就有一个公式VOUT=Vz-Vbe,可以根据VOUT来选择合适的稳压管。从稳压管的SPEC中我们可以看到,Vz@Izt这个参数,指在Izt=20mA时,稳压管的稳压值Vz=5.1V,也就是说流过稳压管的电流在20mA以上,稳压效果最佳。三极管导通之后,E点电压会升高,当升高到Vbe。

U_YAO的博客 2321

IOS 开发之UIImageView帧动画的内存管理

讲UIImageView帧动画的内存管理之前先简要讲一下UIImageView的帧动画s

embeddedarm的专栏 602

Trae+雪球MCP,化身专业的股票分析师(玩转100个MCP系列第二弹)

大家好呀,我是程序员夏叶,深度AI编程使用者,专注于分享AI编程方面的使用技巧、经验以及前沿资讯,有兴趣的可以关注我的公众号,一起学习,共同进步。第二弹,使用Trae+雪球MCP,获取股票实时行情,分析股票走向等,写代码间隙看看股票价格,研究研究行情,哈哈。真的很不错呀,最关键的是,足够隐蔽,同事以为你在写代码,实际你在浏览股票行情,哈哈,感兴趣的可以试一下哦。说实话,沧州明珠这只股我算是砸手里了,不过还好买的不多,哈哈。

cpp加油站的专栏 517

iOS-UIImageView的帧动画

UIImageView的帧动画 @property(nonatomic,copy) NSArray *animationImages; // 设置需要播放的图片(到时会按照数组顺序播放) @property(nonatomic) NSTimeInterval animationDuration; // 动画的持续时间 @property(nonatomic) NSInteger...

aquioy6868的博客 183

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

UIImageView播放帧动画

简单的UIImageView执行帧动画。首先设置动画结束想要显示的图片。     加载需要显示的图片在一个数组,然后按顺序播放。     NSMutableArray  * aa = [NSMutableArray array];          for(int i=1;i16;i++)     {         NSString *imgName=[NSString st

mqm112233的专栏 489

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Objc_帧动画-UIImageView动画

汤姆猫帧动画详解: //创建一个图片视图 UIImageView *tomCat = [[UIImageView alloc] init]; tomCat.frame = [[UIScreen mainScreen] bounds]; tomCat.image = [UIImage imageNamed:@"0.jpg"]; [se...

dibu3564的博客 117

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

UIIMageView实现帧动画

使用UIIMageView实现帧动画 首先找两张人物动作图片拖到assets里面去。 main.storyboard里新建两个按钮,一个UIImageview(并使用连线方式关联) 使用NSMutableArray存储UIImage 使用UIImageview加载NSMutableArray数组 配置UIImageview的动画时长 启动动画 效果如下代码如下- (IBAction)startAni

xubuhang的专栏 612

Swift: 帧动画 UIImageView

效果如下: 代码如下: //加载图片 public func loadImages(_ complete: @escaping ((_ images: [UIImage])-&gt;())) { DispatchQueue.global().async { guard let imageFolder = Bundle.main.path(forResource: ...

Quinn's blog ! I'm glad to be here! 761

【iOS】UIImageView点击屏幕,帧动画和图片消失

——周技术回顾 问题描述 用UIImageView做序列帧的时候,点击屏幕突然发现帧动画和图片消失了,在其他场景是没问题的,看了视图层级结构,UIImageView依然存在,只是帧动画和图片消失,经过学习研究发现是因为UIImageView传递的响应链中如果有UITableView或者UICollectionView等控件的时候,点击界面,动画和图片就会消失。 导致这个问题的原因是因为我们做动画的时候只是单纯的给UIImageView设置图片数组,并没有设置它的hightlight状态,如果点击界面,响.

李海军的专栏 1166

transform形变属性和UIImageView的帧动画

transform形变属性和UIImageView的帧动画

shengyu优快云的博客 663

iOS学习笔记-011.UIImageView的基本介绍和帧动画

UIImageView的基本介绍 一实例化UIImageView - initWithImage - initWithImage highlightedImage 二设置图像 三设置显示模式 四序列帧动画基础 属性说明 相关方法 五帧动画的代码 六帧动画的效果 UIImageView的基本介绍一、实例化UIImageView创建一个UIImageView可以使用以下的方法1. - initWith

qiwenmingshiwo的专栏 635

ios9--UIImageView的帧动画

// // ViewController.m // 05-UIImageView的帧动画 // #import "ViewController.h" @interface ViewController () /** * 属性 */ @property (weak, nonatomic) IBOutlet UIImageView *imageView; @end @impleme...

weixin_33834910的博客 83

基本控件UIImageView的帧动画

1. UIImageView帧动画相关属性和方法@property(nonatomic,copy) NSArray *animationImages; 需要播放的序列帧图片数组(里面都是UIImage对象,会按顺序显示里面的图片)@property(nonatomic) NSTimeInterval animationDuration; 帧动画的持续时间@property(nonatomic) N

399

关于UIImageView帧动画内存无法释放的问题

UIImageView帧动画相关属性和方法: 需要播放的序列帧图片数组(里面都是UIImage对象,会按顺序显示里面的图片) @property(nonatomic,copy) NSArray *animationImages; 帧动画的持续时间 @property(nonatomic) NSTimeInterval animationDuration; ...

weixin_34055787的博客 217
上一篇: 最快让你上手ReactiveCocoa之进阶篇
下一篇: HTTP协议详解
kingcodexl
博客等级 码龄12年 18粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值