【问题标题】:IOS universal app image resolutionsIOS通用应用图像分辨率
【发布时间】:2018-03-13 23:13:15
【问题描述】:

通用 IOS 应用程序必须以推荐的比例 @2x、@3x 以及非视网膜 (@1x) 提供所有图像吗?这是通过应用审核的必要条件吗?

如果我只提供一组分辨率足够高的图像在大屏幕上看起来很清晰,然后再缩小到更小的屏幕尺寸怎么办?缩小时,合成引擎会受到粗略的性能损失,但如果性能没有明显下降并且一切看起来都很好,这有关系吗?

滚动视图是我的应用程序的核心。因此,我创建的图像的分辨率比大多数时候所需的分辨率都要高。直到用户缩放到每个图像可能占据整个屏幕的级别,然后才能实现高分辨率的好处。

【问题讨论】:

    标签: ios universal


    【解决方案1】:

    这是通过应用审核的必要条件吗?

    没有。但是请继续阅读...

    如果我只提供一组分辨率足够高的图像在大屏幕上看起来很清晰,然后再缩小到更小的屏幕尺寸怎么办?

    那么你会浪费内存并使渲染引擎工作变得不必要的辛苦。 (请记住,图像有两个维度,因此内存使用量会随着图像变大而指数增加。)

    如果性能没有明显下降并且一切看起来都很好,这有关系吗?

    Apple 很清楚:他们宁愿你不这样做。

    因此,我创建的图像的分辨率任意高于大多数时间所需的分辨率。直到用户缩放到每个图像可能占据整个屏幕的级别,然后才能实现高分辨率的好处

    但是“任意高”是完全错误的;您需要将图像实时缩小到它在此设备上所需的最大尺寸。您知道如何在代码中缩小图像,不是吗?

    另外...您可能不知道 CATiledLayer 将完全满足这种情况:它将以不同的分辨率拍摄多张图像,并在用户缩放时将它们替换为另一张。这样,您在任何给定时刻只使用您实际需要的分辨率。

    【讨论】:

    • 我不明白你所说的代码缩减是什么意思。基本上我基本上已经创建了精灵图像。屏幕上可能同时出现多个。用户可以决定或多或少地围绕这些中的任何一个进行缩放。我已经对其进行了安排,以便在最大缩放时,精灵将以一比一的像素显示比例显示在可用的最大屏幕上。每个精灵实际上是一个复杂的运动部件视图层次结构,实际上是 UIView 子类。它们被缩放到屏幕尺寸的一定百分比,以适应不同尺寸的设备。
    • “缩小代码”是指,我们加载一个 300x300 的图像并将其转换为 100x100 的图像以供显示。这种变化非常显着:第二张图像使用的内存大约是第一张的十分之一! - 不知道我理解你所说的精灵图像是什么意思。但是你刚才所说的并没有改变我所说的。 :) 在我看来,您应该了解如何在代码中按比例缩小图像,以及如何使用 CATiledLayer。
    • 我过去确实看过 CATiledLayer,但我认为它可能不适合我。它似乎更适用于缩放大型背景图像,以通过平滑滚动显示更多细节。但是我有一个非常复杂的视图层次结构,其中背景图像本身并不重要。不过我会再看一遍。 ---您所指的缩小实际上是动态渲染,而不是拉伸/收缩 UIImageViews。所以使用核心图形样式上下文,例如 CGImageCreateWithImageInRect(image.CGImage, rect);
    • 应该是drawInRect:
    猜你喜欢
    • 1970-01-01
    • 2014-11-20
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多