求教, iOS 中 UIImageView 显示超大图片,比如 3000*30000 大小,有什么优化的方向?看了 Apple 的一个 Sample 用了 CATiledLayer,可是显示会有一块一块出现的卡顿。大家都有什么想法么?谢谢。

2016-08-24 23:01:07 +08:00
 zhlooking
6104 次点击
所在节点    iDev
9 条回复
hexor
2016-08-25 01:40:15 +08:00
这么大的图片 应该切割了再动态显示比较好吧
zhlooking
2016-08-25 01:43:53 +08:00
@hexor 切割动态显示用到 CATiledLayer 的话显示的时候会闪一下,蛋疼的没有找到解决方法。
wohenyingyu01
2016-08-25 01:49:13 +08:00
hexor
2016-08-25 01:50:29 +08:00
@zhlooking 会闪感觉应该是默认加载的区域不够大吧, 可以找下 api 有没有相关参数调整默认加载的图片张数. 如果实在不行可以考虑自己实现一个, 切图我不知道, 动态加载的实现不是特别复杂.

另外, 我不是开发 iOS 的.
zhlooking
2016-08-25 02:07:03 +08:00
@wohenyingyu01 谢谢。要考虑不压缩图片质量和宽高尺寸的情况下,那篇文章没有提到方法吧?还是我看疏漏了?
@hexor 谢谢,方向搞对了就很好弄了。
kitalphaj
2016-08-25 08:21:15 +08:00
4 楼是对的,可以提前加载额外的区域就不会闪了。
wohenyingyu01
2016-08-25 10:01:58 +08:00
@zhlooking 不太明白为啥不压缩尺寸,图片的分辨率超过 uiimageview 的分辨率似乎没有什么意义吧?在用户缩放的过程中不断调整图片 resample 比较经济,而且不损失图片质量吧……
wohenyingyu01
2016-08-25 10:05:38 +08:00
@wohenyingyu01 纯属个人猜想
zhlooking
2016-08-25 10:26:54 +08:00
@kitalphaj 主要问题是在第一次加载的时候需要显示整个图片,这个时候就需要记载全部 tiledlayer ,然后就闪了一下。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/301589

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX