ios 不同路径加载 相同图片_ios的UIImage的两种不同的图片加载方式 tom猫

在ios的UI交互设计时,对图片的处理是难免的;不同的处理方式会对内存有不同的影响;

************************************************************

a:图片格式及NSBundle加载全路径:

1》xcode或者说苹果官方是极力推荐使用的图片格式是png

2》所有如果项目中用得是png的图片,则不用写后缀名

3》其他格式要求后缀名,特别是用UIImage加载图片时

NSBundle加载全路径的常用代码:

// 得到文件的路径

NSString *fullPath = [[NSBundle mainBundle] pathForResource:namePic ofType:nil];

// 从路径中读取图片

UIImage *newImg = [[UIImage alloc] initWithContentsOfFile:fullPath];

************************************************************

b:以tom猫为例,看待UIImage的两种不同形式的图片加载

tom猫用得是逐帧序列动画:背景是一个满屏的UIImageView,然后再UIImageView中一张张的切换图片;

1》_tomList是一个UIImageView类型的类的属性;那么播放逐帧序列动画的步骤

//1: 设置要播放逐帧序列动画的图片

_tomList animationImages = array; //array通常是个图片数组//2: 设置动画的时长:

_tomList animationDuration = 2.0;//3:设置重复次数

_tomList animationRepeatCount = 1;

...

...//最后:开始动画

[_tomImage startAnimating];

array里的图片加载的方式

1:UIImage *img = [UIImage imageNamed:namePic];

// UIImage imageNamed这种方式是有缓存的,如果是第二次调用,它不是从文件中取,而是直接从缓存中拿,也就是说内存会越来越大

但是直接从内存中取图片,速度肯定快一点,性能高一点

2: NSString *fullPath = [[NSBundle mainBundle] pathForResource:namePic ofType:nil];

UIImage *newImg = [[UIImage alloc] initWithContentsOfFile:fullPath];

这样是不会有缓存的,是使用全路径加载;但是也不会再动画播放完成后自动释放;只有进行下一次动画才会被释放;所以一般我们可以手动释放

//动画播放完成后,释放图片

[_tomImageperformSelector:@selector(animationImages)withObject:nilafterDelay:self.tomImage.animationDuration];

总结:两种方式各有利弊,imageNamed性能高一点,但是前提是图片占用的内存较小,且该图被多个地方或频繁使用;

但是如果,图片存储空间大,内存吃不消,就得用initWithContentsOfFile:fullPath。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值