为iPhone/iPhone Retina/iPad/iPad Retina单独创建故事板

5

我有一个问题可能听起来有些奇怪,但作为一个新手,我猜想没有什么问题是愚蠢的...

我需要为所有四种设备制作单独的故事板吗?

目前我有两个故事板,一个用于iPhone,一个用于iPad,但当我获取我的视图框架时,它总是显示设备的大小,而不是视网膜设备的大小。例如,在iPhone上,我的视图大小为320x460,在iPhone Retina上也是如此...同样适用于iPad。

谢谢


不要误解,有很多愚蠢的问题存在!说没有愚蠢的问题,只有愚蠢的回答的人是白痴。然而,这是一个很好的问题! - Jake
2个回答

5

不需要。从开发者的角度来看,分辨率是相同的。iOS会自动进行所有的调整。唯一需要注意的问题是,如果你在应用程序包中使用图像(例如选项卡图标),则必须添加一个非Retina和一个Retina(双倍分辨率)的图像。例如,如果你有一个24x24像素的icon.png,则必须添加一个48x48像素的icon@2x.png。iOS会自动将你的图标替换为Retina设备上的“@2x”文件名。


好的,明白了。这正是我所想的,但对于图像,它是否总是选择@2x文件或~ipad文件(如果指定)?换句话说,是否有情况需要检测设备并更改文件名以引用不同的图像? - LilMoke
我不确定在运行时是否会检测到例如您下载的图像。但是我确定当您检测到视网膜显示器时,可以指定视网膜准备好的图像。此答案可以帮助您进行检测 https://dev59.com/iHA75IYBdhLWcg3wdIl0#3294120 - LuisEspinoza
谢谢,我会看一下。我不是在说我下载的图片,而是来自我的主要捆绑包中的图片。UIImage是否总是选择正确的图片,这才是问题所在。 - LilMoke
啊,没错。如果这些图片是你的捆绑包内的,并且你在文件名中添加了“@2x”,那么当设备是Retina时,iOS将使用它。 - LuisEspinoza

0

你可以区分你的应用程序中的图形内容,但是目前我不认为你可以区分视图/故事板。

如果你想利用视网膜屏幕的分辨率,可以使用 @2x 技巧。

具体做法如下,我们以应用程序图标为例:

  • Icon.png (iPhone 的默认图标,尺寸为 57x57 像素)
  • Icon@2x.png (配备视网膜显示屏的 iPhone 的默认图标,尺寸为 114x114 像素)

  • Icon~iPad.png (iPad 的默认图标,尺寸为 72x72 像素)

  • Icon~iPad@2x.png (配备视网膜显示屏的 iPad 的默认图标,尺寸为 144x144 像素)

这个技巧对于所有的图形内容都很有用,而且在你制作界面和代码时不需要额外的代码。当你必须指定要使用的图形文件时,总是指定没有 "@2x" 的文件。

希望这会有所帮助。


是的,应用程序图标的示例总是被使用……但这种技术是否总是有效?对于UIImage,这总是有效吗?还是有时我需要指定正确的图像? - LilMoke
它总是有效的,不需要额外的代码来更改图像。您只需引用普通图像,iOS会自动完成其余部分;) 如果您有兴趣,请下载此示例代码,您将看到它的实际效果:(链接)http://www.angeldiaz.es/idec-upf/leccion07/Example37.tar.gz 记得更改模拟器目标以查看其工作情况。 - angeldiaz
1
这还不够。并非所有的UIImage都有关联的文件名。您可以从图形上下文中获取UIImage,在这种情况下,您必须注意缩放值的一半/双倍分辨率问题。 - hariseldon78

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接