我们可以提供@ 2x图像吗?

时间:2012-03-19 08:37:44

标签: objective-c ios cocoa-touch uiimage

我们知道我们应该为iphone / ipad应用提供正常尺寸的图像和@ 2x尺寸的图像。 但是为一张图片提供双倍尺寸是一件无聊的事情。

我做了一些测试,如果只有@ 2x图像,如果需要,系统会自动将@ 2x图像缩小到正常尺寸。所以在这种情况下,无视网膜iphone / ipad看起来并不奇怪。

我想知道我们可以提供@ 2x图像并让系统缩小它们以获得更小的图像吗?苹果允许这样做吗?

感谢。

修改

我意识到它会导致旧设备出现内存问题。

再次感谢。

8 个答案:

答案 0 :(得分:11)

我认为所有Apple都不会拒绝您的应用。但这不是一个好主意。

由于非视网膜设备可以使用较少的内存,因此将所有这些大图像加载到内存中可能会让你成为一个记忆内容。这可能会使您的应用程序因低内存警告而崩溃。

您可以使用简单的自动播放器脚本轻松地将@2x图像的大小调整为一半。如果你真的不想这样做,就没有必要手工完成。

答案 1 :(得分:9)

Apple说你必须提供两者。在猜测在什么情况下它是可以接受的,我们可以花几天时间 - 最后它就像读卡片一样,一些随机的苹果公司将决定他如何解释指南。

如果手动缩小图像的任务对你来说太无聊了,为什么不为你自动创建一个工具/脚本。

你的陈述,没有增加使用量是不正确的。图像数据作为原始数据存储在存储器中。每个像素最多四个字节。 Retina版图像必须使用大约4倍的内存。

答案 2 :(得分:5)

+1有趣的问题。

:如果您考虑减少应用程序的大小 表示您的应用中有很多图像。在这种情况下: 不要这样做,因为你要给老年人增加额外的负担 设备(已测试)。

对于图形较少的应用程序,它可以,但没有任何意义。

从任何角度来看,这都是一个坏主意。

因为你已经在考虑创建所有的@ 2x图像了:你 只需使用Unretiner将所有图片转换为“正常” 大小,你很高兴。

答案 3 :(得分:2)

如果应用程序占用空间对您来说是一个主要问题,那么您可以采用此路由,它将耗费旧设备上的CPU和内存空间增加(内存大约是4倍)。但是,如果您加载自己的UIImages(子类化UIImage),以便它在旧设备上加载以在返回最终结果之前缩放原始图像,那么只有CPU会受到影响。

答案 4 :(得分:2)

如果您要创建仅针对iOS 7.0及更高版本的iPhone应用,则没有理由提供非视网膜图像,因为唯一可以运行iOS 7或更高版本的iPhone / iPod型号(iPhone 4或5代iPod Touch和以上)有一个视网膜显示器。

有两款没有视网膜显示屏的iPad型号可以运行iOS 7.0,iPad 2和原装iPad Mini。请注意,iPad 2于2014年初停止生产。如果您正在创建一个针对iOS 7及更高版本的iPad应用或通用应用,那么这些只是可以运行您的应用的两个非视网膜设备。

答案 5 :(得分:1)

是的,因为iphone需要在缩小之前加载@ 2x图像,这将使用4倍的内存。所以这不是推荐的方式。

答案 6 :(得分:0)

苹果不允许这样做。我们必须将图像命名为imagename.png和imagename@2x.png。

您可以参考Drawing and Printing guide for iOS

答案 7 :(得分:0)

我们只在我们的应用程序中提供@ 2x图像,Apple并没有拒绝该应用程序。