gpt4 book ai didi

ios - CATiledLayer 和 UIImageView 他们之间有什么大不了的?

转载 作者:行者123 更新时间:2023-12-01 16:59:05 24 4
gpt4 key购买 nike

几个月前,我从 Apple 网站上发现了一个非常棒的示例代码。该示例称为“LargeImageDownsizing”,奇妙的是它解释了很多关于如何从资源中读取图像然后在屏幕上呈现的信息。深入研究该代码,我发现了一些让我有些不安的东西。缩小的图像被传递给具有 CATiledLayer 的 View ,但没有在每个图 block 上提供一 block 图像以提高内存性能,它只是设置图 block 大小然后加载图像(我让事情变得简单,以了解概念)。所以我的问题基本上是为什么?为什么使用 CATiledLayer 如果它没有以正确的方式提供,他们可以使用普通的 UIImageView ......所以我做了一些测试来了解我是否正确。修改代码简单地添加一个带有 ImageView 的 ScrollView 作为 subview ,并响应委托(delegate) ScrollView 进行缩放。我在设备和 sim 上进行了这些结论测试:

  • - 对内存的影响和占用是完全一样的,即使在缩放滚动操作期间,我一点也不惊讶,图像在内存中解压缩
  • -时间配置文件说,在滚动缩放操作期间绘制 tileview 而不是 uiimageview 需要更多时间,这并不让我感到惊讶 uiimageview 已经绘制
  • -如果我发送内存警告,两种解决方案之间没有任何变化(仅在 sim 上)
  • -测试核心动画性能我在 60FPS 左右得到相同的结果

  • 那么这两个 View /层之间有什么关系,为什么在这些特定情况下我应该选择一个而不是另一个呢? UIImageView 似乎赢得了这场战斗。

    我希望有人可以帮助我理解这一点。

    最佳答案

    它们可能对小图像执行相同的操作,因为在操作系统性能方面的唯一区别是 CATiledLayer 在后台线程上绘制。根据瓦片大小,CATiledLayer 甚至会更慢,因为它必须为一张图像绘制多个瓦片。

    但 ...

    CATiledLayer 的重点是您不需要绘制所有图 block ,尤其是在放大非常非常大的图像时。知道实际需要哪些部件是明智的。驱逐不再需要的瓷砖也很聪明。

    或者,要使这种机制起作用,您需要分别提供图像的各个部分。我们正在谈论可能无法在未压缩的内存中保存的图像的总大小。

    关于ios - CATiledLayer 和 UIImageView 他们之间有什么大不了的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8869171/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com