导语:App中显示的图片大部分来自服务器,一般使用SDWebImage帮我们下载并显示,但是这并不是最好的效果,本文介绍如何优化网络图片的显示。

友情提示:性能优化是个无底洞,建议适可而止。


一、存在的问题

1.像素不对齐

  • 由于网络图片一般不会有@2x和@3x之分,通过SDWebImage库下载的图片不加以处理就直接显示。

  • 像素不对齐是指物理像素(pixel)不对齐;出现像素不对齐,会导致GPU在渲染时,对没对齐的边缘,进行插值计算,造成性能损耗了。

  • 当图片的size和显示图片View的size不同 或 图片的scale和屏幕的scale不同,就会发生像素不对齐的问题。

  • iPhone模拟器中的Debug -> Color Misaligned Images选项 或Core Animation->Display Settings->Color Misaligned Images选项都可以将像素不对齐的部分显示出来。

  • 当UIView(及其子类)的frame像素不对齐显示洋红色;当图片的像素大小与控件的大小不一致,显示黄色。

2.像素混合

  • 像素混合是指在某视图为透明背景色,GPU在渲染视图时,需要将该视图和下层视图混合(Blend)后才能计算出该像素点的实际颜色;这增加了GPU的工作,损耗了性能。

  • 当图片是透明图片时,像素混合必然会发生。

  • iPhone模拟器中的Debug ->Color Blended Layers选项 和 Core Animation ->Display Settings ->Color Blended Layers都可以将像素混合的部分显示出来。

  • 发生了像素混合的区域显示红色,正常则显示绿色。

3.离屏渲染

  • App中经常使用圆角图片,如果通过设置cornerRadius值和masksToBounds=YES实现圆角效果。因为它会触发GPU的离屏渲染,引起性能问题。模拟器中的Color Offscreen-Rendered可以检测是否发生离屏渲染(如果出现黄色就发生了离屏渲染)。

二、解决方案

1.像素不对齐

  • 要想像素对齐,必须保证image.size和显示图片view.size相等 且 image.scale和 [UIScreen mainScreen].scale相等。可以在网络图片下载完成后进行压缩裁剪等操作在进行渲染。

2.像素混合

  • 设置图片为不透明,可以设置背景颜色为白色。

3.离屏渲染

  • 离屏渲染是图片圆角处理中讨论比较多的问题,一般利用Core Graphics绘制。

iOS性能优化 - 网络图片加载优化相关推荐

  1. Android 浏览器内核浅谈,基于WebKit内核的Android手机浏览器的性能研究与加载优化...

    南京邮电大学 硕士 2017 基于WebKit内核的Android手机浏览器的性能研究与加载优化 Performance Research and Load Optimization of Andro ...

  2. 前端页面性能优化 - 字体加载优化

    相比于英文的字库来说,中文字库的体积非常之大,小则1M,动辄几十 M 的体积非常常见.所以在前端页面性能优化中,字体加载的优化就显得尤为重要.阅读了相关的知识和文章,在研究了市面上字体加载方案之后,我 ...

  3. 前端性能优化学习 08 资源加载优化

    图片延迟加载 什么是延迟加载 首先来想象一个场景,当浏览一个内容丰富的网站时,比如电商的商品列表页.主流视频网站的节目列表等,由于屏幕尺寸的限制,每次只能查看到视窗中的那部分内容,而要浏览完页面所包含 ...

  4. (七)传输加载优化(前沿技术解决高访问量网站性能优化问题)

    传输加载优化 启用压缩Gzip[必会的传输压缩方案] Gzip 安装ngnix 启用Keep Alive[通过一个参数提速连接] Keep Alive HTTP资源缓存[必会的HTTP缓存方法] 看看 ...

  5. web字体库加载优化_优化Web字体以提高性能:最新技术

    web字体库加载优化 This article is part of a series created in partnership with SiteGround. Thank you for su ...

  6. 前端性能优化(一)用一张图说明加载优化

    本文从加载的角度写一下前端性能优化. 需要说明的是下面这种脑暴图是按照从第一象限和第四象限的顺序来看的. 一.加载体积优化 我们无法控制用户的网络状况,既然想加载速度快,那当然是能不加载就不加载,能少 ...

  7. Hexo博客Next主题配置加载优化性能提升

    主题源加载优化 把在NexT主题的_config.yml里面的: # Uri of fonts host. E.g. //fonts.googleapis.com (Default) host: 改为 ...

  8. react性能优化-懒加载原理

    编译阶段的优化 开发阶段构建更快 loader的include和exclude属性 {test: /.(j|t)sx?$/,use: [{loader: "thread-loader&quo ...

  9. queueing 优化_简单聊聊网页的资源加载优化

    移动开发中很重要的一块是资源的加载优化.移动开发由于网速低带宽,高延迟,移动设备小内存,低处理器性能的原因,因此很多时候不得不通过优化前端页面的性能来满足用户对网页加载的预期. 前段时间做了相关方面的 ...

最新文章

  1. 002_Maven命令
  2. 【蓝桥杯嵌入式】【STM32】12_2020_第十一届_蓝桥杯_嵌入式设计与开发项目_省赛
  3. 5000起步没商量!vivo NEX 3S 5G手机正式发布:骁龙865+无界瀑布屏加持
  4. 学习php有多难,1.3 使用和学习PHP有多难
  5. python pexpect 学习与探索
  6. c语言输入身高计算标准体重_女生标准身高体重对照表
  7. 【王道操作系统笔记】系统调用
  8. 阿里云Kubernetes Service Mesh实践进行时(7): 可观测性分析服务Kiali
  9. 松下PLC连接海创-IIoT平台案例
  10. 使用三边定位算法进行室内定位
  11. 一个球绳命最后的高度哈哈
  12. A.Busiest Computing Nodes
  13. Xshell_5安装与使用
  14. 4.Python数据结构与算法分析课后习题__chapter4
  15. Windows 反消息钩子(1)
  16. python pandas 实战 百度音乐歌单 数据分析
  17. b64_c3VuJTIwYm95 好看的电影推荐
  18. 细节:基本数据类型中float与double的区别
  19. 解决因种子消失而无法继续BT下载的问题(转载自网易学院)
  20. nodejs+vue+elementui学生作业管理系统thinkphp

热门文章

  1. iOS学习之Socket使用简明教程- AsyncSocket
  2. 百度开发者大会-《用HTML5新特性开发移动App》PPT分享
  3. Mybatis---总结
  4. unity meta文件
  5. C++三种内存分配方式
  6. 本人CCNP、OCP MCSA 证书寻求挂靠
  7. Cocos2dx游戏开发系列笔记6:怎样让《萝莉快跑》的例子运行在vs和手机上
  8. ios5 ARC机制介绍和使用
  9. 联想lenovo Z470笔记本的驱动安装
  10. 基于小型GIS的配电设备运行监控系统