• 加载图片节省内存的方法


    加载图片节省内存
    1,在Image Views中调整图片大小
    如果要在UIImageView中显示一个来自bundle的图片,应该保证图片的大小和UIIimageView的大小是相同的,在运行中缩放图片是很消耗资源的,特别是UIImageView嵌套在UIScrollView中的情况下。
    如果图片是从远端服务器加载的话,不能控制图片大小,比如在下载前调整到合适的大小,可以在下载完成后,最好用background thread ,缩放一次,然后在UIImageView中使用缩放的图片



    2,选择是否缓存图片

    常见的从bundle中加载图片的方式有两种,一个用ImageNamed,一个是ImageWithContenOfFile,第一个常用一点

    imageNamed的优点是当加载时,会缓存图片,imageNamed的文档中说:如果图片存在的话,用一个指定的名字在系统缓存中查找并返回一个图片对象,如果在缓存中没有找到相应的图片,这个方法从指定的文档中加载然后缓存并返回这个对象

    相反,imageWithContenOfFile仅加载图片
    如何选择:如果要加载一个大图片而且是一次性使用,那么就没必要缓存这个图片,用imageWithContentsOfFile就行,这样不会浪费内存来缓存他。
    然后,在图片反复重用的情况下,imageNamed是一个好得多的选择


    3,权衡渲染方法
    在iOS中可以有很多种方法渲染图片,CAlayer,CoreGraphics ,OpenGL
    简单来说,用实现渲染好的图片更快一些,如此一来iOS就免去了创建一个图片再画东西上去然后显示在屏幕上的程序,问题是需要把所有需要用到的图片放到AppBundle里面,这样就增加了体积。然而,使用图片也以为这失去了使用代码调整图片的机动性,需要一遍又一遍不断的重做他们,这样很浪费时间,如果要做一个动画效果,虽然每幅图只是一些细节的变化,但是需要很多的图片造成Bundle大小的不断增大。
    所以,权衡一下利弊,到底是要性能还是要bundle保持合适的大小

    4,正确设定背景图片

    在View里放背景图片有很多方法,可以画上去,可以使用UIColor中的colorWithPatternImage来设置背景
    可以在View中添加一个UIImgaeView座位一个子View

    如果使用全幅的背景图,必须使用UIImageView,因为UIColor的ColorWithPatternImage是用来创建小的重复的图片作为背景的,这种情形下使用UIImageView可以节约不少的内存


    5,尽量别在 tableView 上加载 JPEG 格式的图片
    jpeg图片过大,加载jpeg图片的时候Cpu要忙于为图片解压所以延迟显示图片,如果过多的在tableView上使用jpeg图片,会造成Cpu压力过大


    6, 尽量避免视图层次调整,以及视图添加和移除


    7,应避免使用圆角、阴影、遮罩等属性

  • 相关阅读:
    Photoshop
    前端性能优化
    Angular Cli和npm、node.js命令
    Angular项目结构
    页面布局
    滚动条与height
    1.2 Angular入门
    前端的e2e测试
    Angular的部署
    jQuery插件开发的基本形式
  • 原文地址:https://www.cnblogs.com/zyjzyj/p/5984999.html
Copyright © 2020-2023  润新知