【发布时间】:2016-08-25 04:40:46
【问题描述】:
我有一个非常基本的问题,因此没有发布任何代码。
概览
我有一个集合视图,它使用我编写的自定义布局。这个自定义布局所做的只是应用一些数学运算,并根据屏幕宽度找出放置在屏幕上的最佳单元格数量,并尝试使用填充来舍入额外的像素。因此,当集合视图更改其方向时,我的大多数单元格大小都会发生变化,尤其是在 iPad Pro 等设备上。我的意思是,如果单元格大小是纵向 300 x 300,它可能会变成 320 x 300,类似于横向。 (它们不是确切的值,只是想给出一个想法)
每个单元格中都有 imageView,并且需要从服务器下载图像。我正在使用 SDWebImage。下载的图像比我的单元格大得多,我不想将这么大的图像加载到内存中,因此我决定在将图像下载到 SDWebImageCache 之前调整图像大小。
问题
现在,由于我的单元格大小会根据设备方向发生变化,为了使图像看起来像素完美,我必须在每次设备为每个单元格旋转时调整图像大小。但这会导致性能不佳。
我想出的解决方案
我必须在 SDWeImageCache 中为一个方向缓存两张图片,但这又会增加应用程序的内存占用。
-
找到最大尺寸的单元格将在各种方向中获取并将图像调整为该尺寸,然后将相同的图像用于所有较小的单元格尺寸,图像视图的模式设置为 AspectToFit。
请建议我什么是正确的方法。我不需要代码,只需要想法。
【问题讨论】:
-
2.似乎最简单。我会选择 2,看看结果是否足够好(我打赌它会)。如果没有,请选择 1。
-
@deadbeef :感谢您的建议 :) 解决方案 2 的唯一问题是,在用户将设备旋转到所有方向之前,我不知道单元格的最大大小 :( 或者我会必须预先计算所有方向的大小,这应该很好,因为它几乎不涉及数学方程,并且应该比调整图像本身的大小更轻:D
-
当设备转动时它们是否会变形?
-
@impression7vx :它的尺寸会略有不同 :) 如果我使用 scaleToFill 图像看起来会失真,因为 imageView 不会遵循图像的纵横比,但如果我选择 ScaleToFit 图像会保持其纵横比,但在图像视图中留下的空间很小,正如我上面解释的那样,这个空间因各种方向而异:)
-
啊!
scaleToFit绝对是您的最佳选择!这是一个选项,而不是保存这么多数据。
标签: ios swift image sdwebimage