iOS——app启动动画

本文介绍了在iOS应用中实现启动动画时遇到的内存问题和解决方案。通过使用定时器和UIImageView来显示多张图片动画,作者发现内存占用过高。为了解决内存释放问题,使用了`UIImage alloc] initWIthContentsOfFile:`代替`UIImage imageName:`和`UIImage imageWithContentsOfFile:`。同时,创建了一个缓存池,异步加载图片到数组中,主线程定时更新UIImageView,提高了动画流畅性。
摘要由CSDN通过智能技术生成

关于在App启动时播放一段动画,可以用flash直接播放,也可以用多张连续的图片来实现,在项目中,我选择了后者。

通过连续的多张图片做出动画效果,系统自带的UIImageView就能完成这个功能,一开始我也这么做的,但是最后发现内存爆了,占了800M多(iPAD)。(注:一张100K的png图片初始化为Image放到内存后会占用几M到几十M的空间不等)

  最后我选择了通过定时器不断刷新UIImageView.image的方法。

          在这里又被系统忽悠了一把。 [UIImgae imageName: ]和[UIImage imageWithContentsOfFile: ],这两个方法从理论上说,前者是系统分配一块内存缓存图片,并在app生命     周期内一直存在,而后者是暂时存于内存,事后就释放的。我用了后者,发现内存一样爆掉,似乎(肯定)系统并没有释放内存。这个问题困扰了我半天,到底如何才能让系统及时释放这些空间,换个角度想可能更好,手动申请 —— 手动释放。

          于是我换成了[UIImage alloc]initWIthContentsOfFile: ]方法,这样就成功的解决掉了内存无法释放的问题。我的动画图片又106张,测试中发现只占了40-50M的空间,可以接受。

          解决了内存问题,如何能让图片快速刷新就成了当务之急。

          我建了个缓存池,后台异步读取图片到NSMutiableArray中,主线程从array中获取image并定时刷新到ImageView中。这个方法在多核设备中性能有所提高,动画更加流畅。

          下面是核心代码:


[cpp]  view plain copy
  1. - (void) precache  
  2. {  
  3.     _cacheImages = TRUE;  
  4.     _cacheImageArray = [[NSMutableArray alloc]initWithCapacity:0];  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值