【问题标题】:Best practices to load very large images in a scroll view for zooming?在滚动视图中加载非常大的图像以进行缩放的最佳做法?
【发布时间】:2020-03-04 12:26:52
【问题描述】:

我正在将一个非常大的图像 (8000x8000) 加载到位于 UIScrollView 中的 UIImageView 中。这可行,但它会消耗大量内存并且需要几秒钟才能加载。

我研究了一种更好的方法,我发现的所有示例均基于 2010 年 WWDC 示例,称为 PhotoScroller。此示例使用带有 CATiledLayer 的自定义 UIView 将大图像分解为较小的图块并将它们绘制到屏幕上。

https://github.com/master-nevi/WWDC-2010/tree/master/PhotoScroller

在 iOS 13 中是否有更现代的方法来做到这一点,或者这仍然是最好的方法?

【问题讨论】:

    标签: ios objective-c uiview uiimage catiledlayer


    【解决方案1】:

    这仍然是最好的方法。 8000x8000 是巨大的。您不能一次加载整个图像。 CATiledLayer 意味着您一次只需要加载几个图块 - 只是用户当前正在查看的图像部分。

    【讨论】:

    • 你可能想看看我书中的这一部分:apeth.com/iOSBook/ch20.html#_tiling 自从我写了那篇文章以来,没有什么重大变化。
    • 好的,谢谢。关于这种方法,我不明白的一件事是必须以不同的比例创建图块。这最终会占用大量磁盘空间。
    • 如果你还想缩放,你只需要不同的比例。
    • 除此之外,这就是示例的重点。你有足够的磁盘空间!你没有的是 RAM 内存。
    • 这是我的书的缩放部分:apeth.com/iOSBook/ch20.html#_zooming_with_detail 你可以看到重点是,如果你不使用额外的图块,你可能会在用户放大时丢失细节。
    猜你喜欢
    • 2013-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多