zoukankan      html  css  js  c++  java
  • 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 mainBundlepathForResource:namePic ofType:nil];

             UIImage *newImg = [[UIImage allocinitWithContentsOfFile:fullPath];

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

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

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

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

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

             

  • 相关阅读:
    Entity Framework EF6使用 MySql创建数据库异常解决办法
    在c#中使用bitblt显示图片
    百度指数完美采集器
    使用HtmlAgilityPack解析Html(非常好用)
    线程的暂停与继续
    webform 中使用ajax
    OkHttp+Stetho+Chrome调试android网络部分(原创)
    android最佳实践的建议(翻译自android-best-practices)
    Android最流行的网络框架(原创)
    android studio 中配置androidAnnotation 的新版正确配置
  • 原文地址:https://www.cnblogs.com/cxbblog/p/3746824.html
Copyright © 2011-2022 走看看