仅限。@ 2x的通用应用

时间:2013-05-28 10:19:47

标签: iphone ios

我的通用应用程序有两个故事板。一个用于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? 我的应用程序会被拒绝吗?

4 个答案:

答案 0 :(得分:7)

不,这不行。

在没有视网膜屏幕的设备上,将使用更多内存来加载视网膜图像。 您应始终提供非视网膜和视网膜图像,并且不要直接加载@2x图像。 iOS将为您加载正确的图像。

答案 1 :(得分:5)

您的应用不会被拒绝,一切都会正常。 但有两个问题:

  1. 在非视网膜设备上,App会加载更大的图像。这不是必需的。因此内存利用率会增加而没有任何结果。

  2. 您无需为iphone和ipad编写条件代码来设置图像。 您可以在命名图像文件时使用代字号:

  3. iPhone:

    1. image@2x~iphone.png(仅限视网膜)
    2. image@2x.png(仅限视网膜)
    3. 图像〜iphone.png
    4. image.png
    5. ipad公司:

      1. image@2x~ipad.png(仅限视网膜)
      2. image@2x.png(仅限视网膜)
      3. 图像〜ipad.png
      4. image.png

答案 2 :(得分:1)

当您将其命名为iPadRecordPanel@2x.png时,它将无法显示正确的图像。您可以给出名称iPadRecordPanel.png,它将从包中获取2x图像。你不能用@ 2x给出后缀。它会自动识别正确的图像并显示它。

答案 3 :(得分:1)

No your app will not be rejected but you should not do this因为不提供非视网膜图像可能会降低旧设备的性能和图像质量,因为需要进行缩小操作。

希望它对你有所帮助。