我的通用应用程序有两个故事板。一个用于iPhone,另一个用于iPad。许多代码都是以编程方式编写的,而且两个storyBoards共享相同的ViewControllers。在视图控制器中如何工作的示例如下:
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){ iPadInUse = YES;}
else { iPadInUse = NO;}
所以,如果我有一个需要在两个设备上显示的图像 - 我写下以下内容:
if (iPadInUse == YES) { recordViewImage = @"iPadRecordPanel@2x.png"
// x and y positions to adjusted accordingly }
else { recordViewImage = @"recordingPanel@2x.png"
// // x and y positions to adjusted accordingly}
在模拟器上,一切都适用于所有设备(视网膜/非视网膜)。我唯一的实际设备是iPhone 4S(一切正常)。这是正常我正在做什么,因为实际上没有任何非视网膜图像加载非视网膜设备(所有图像后缀与@ 2x.png? 我的应用程序会被拒绝吗?
答案 0 :(得分:7)
不,这不行。
在没有视网膜屏幕的设备上,将使用更多内存来加载视网膜图像。
您应始终提供非视网膜和视网膜图像,并且不要直接加载@2x
图像。 iOS将为您加载正确的图像。
答案 1 :(得分:5)
您的应用不会被拒绝,一切都会正常。 但有两个问题:
在非视网膜设备上,App会加载更大的图像。这不是必需的。因此内存利用率会增加而没有任何结果。
您无需为iphone和ipad编写条件代码来设置图像。 您可以在命名图像文件时使用代字号:
iPhone:
ipad公司:
答案 2 :(得分:1)
当您将其命名为iPadRecordPanel@2x.png时,它将无法显示正确的图像。您可以给出名称iPadRecordPanel.png,它将从包中获取2x图像。你不能用@ 2x给出后缀。它会自动识别正确的图像并显示它。
答案 3 :(得分:1)
No your app will not be rejected but you should not do this
因为不提供非视网膜图像可能会降低旧设备的性能和图像质量,因为需要进行缩小操作。
希望它对你有所帮助。