美文网首页
UIImage总结

UIImage总结

作者: coder_lynx | 来源:发表于2016-05-05 18:37 被阅读0次
    • UIImage在iOS中是比较高级的一个类,底层一点的有CIImage和CGImage。
    • UIImage的三个属性:size、imageOrientation、scale
      一张图片的实际尺寸应该是size * scale,这里就跟是否是retina屏幕有关了。retina屏幕的scale为2,当加载图片的时候加载的是1x图。然我们再深入一点儿为什么不直接加载到成二倍的尺寸呢,原因很简单因为我们在界面布局中逻辑坐标系中的 (单位是point),而实际的绘制都是在设备坐标系(单位是pixel)进行的,系统会自动帮我们完成从point到pixel之间的转化。

    imageOrientation的八种枚举:

    typedef NS_ENUM(NSInteger, UIImageOrientation) { 
        UIImageOrientationUp,            // 原始方向(向上)
        UIImageOrientationDown,          // 旋转180°        
        UIImageOrientationLeft,          // 逆时针旋转90°       
        UIImageOrientationRight,         // 顺时针旋转90°
        UIImageOrientationUpMirrored,    // 原始方向水平翻转   
        UIImageOrientationDownMirrored,  // Down方向水平翻转
        UIImageOrientationLeftMirrored,  // Left方向垂直翻转  
        UIImageOrientationRightMirrored, // Right方向垂直翻转
    }; 
    

    在iOS开发中,我们可以使用imageWithCGImage:scale:orientation:方法来设置图片的方向。

    • imageNamed:是UIImage的一个类方法,它做的事情比我们看到的要稍微多一些。它的加载流程如下:
      a. 系统会去检查系统缓存中是否存在该名字的图像,如果存在则直接返回。
      b. 如果系统缓存中不存在该名字的图像,则会先加载到缓存中,在返回该对象。
      观察上面的操作我们发现系统会缓存我们使用imageNamed:方法加载的图像时候,系统会自动帮我们缓存。这种机制适合于那种频繁用到界面贴图类的加载,但如果我们需要短时间内频繁的加载一些一次性的图像的话,最好不要使用这种方法。

    • imageWithContentsOfFile,imageWithData这两个方法跟前一个方法一样都是完成从文件加载图像的功能。但是不会经过系统缓存,直接从文件系统中加载并返回。

    顺便提一下,当收到内存警告的时候,系统可能会将UIImage内部的存储图像的内存释放,下一次需要绘制的时候会重新去加载。

    相关文章

      网友评论

          本文标题:UIImage总结

          本文链接:https://www.haomeiwen.com/subject/fibdrttx.html