0

有没有办法从构建中排除非视网膜设备,是否允许在提交过程中使用?我不是针对 iPad 或 iPad mini。我认为 3GS 用户很少,设备不能处理任何太高级的东西。

我不想在捆绑包中包含非视网膜艺术品。

4

5 回答 5

2

过去,您可以使用本文中描述的方法。阅读帖子后,请参阅此更新的设备功能矩阵

本质上,您选择一组 UIRequiredDeviceCapabilities 键,将支持的设备集限制为视网膜显示设备。

不幸的是,正如您从矩阵中看到的那样,iPad mini 在 Retina Display 方面使这种方法无效(它没有 Retina Display,但它并不缺少任何其他功能,您可以使用它来将其从其他集合中排除视网膜显示设备)。

编辑:根据您的编辑,由于您不是为 iPad/iPad mini 构建的,您可以使用上述方法并需要前置摄像头。

另请参阅此类似的问答

于 2013-06-03T12:59:10.493 回答
2

您不应排除非视网膜设备,因为 iPad mini 是非视网膜设备。也没有构建选项来排除非视网膜设备。

所以非视网膜设备只会使用视网膜图像运行并使用更多内存,这可能会使它们耗尽内存。如果您确实设法排除了 iPhone 3GS,您的应用程序仍需要在非视网膜的 iPad mini 上运行,即使您的应用程序是 iPhone,它也应该在任何 iPad 上运行。

于 2013-06-03T12:44:18.493 回答
0

不,这是不可能的,不幸的是。

您可以查看:Information Property List Key Reference,您可以在其中查看可以配置应用程序需要运行的项目。

也许你可以看一下 session: UIRequiredDeviceCapabilities来尝试将它调整为仅在具有一定 Capabilities 组合的设备上运行,但就像你在页面上看到的那样,无法根据设备显示进行配置.

-

仅支持具有更强大硬件的设备的一个示例是定义您需要使用只有最新设备才有的硬件,例如:前置摄像头。(iPad 2 拥有它,但不是视网膜,只是您可以利用的功能的一个示例)。

也许在您的应用程序中,您可以检查规模,并采取两种不同的方法。

if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]
    && [[UIScreen mainScreen] scale] == 2.0) {
    [self runTheFeature];
} else {
    [self alertYourDeviceSucks];
}
于 2013-06-03T12:53:41.093 回答
0

正如最后一个答案所说,您不应该排除非视网膜设备,但如果您觉得必须这样做,那么您可以这样做:
1-在您的应用程序委托中检查设备是否具有视网膜显示,然后再将主视图控制器添加到界面窗口

if(IS_RETINA)
{
      [self initTheMainViewCotnroller];
}
else
{
      // show alert, warning or anything
      [self showErrorOrWarningMessage];
}

注意:IS_RETINA - 是一个宏

#define IS_RETINA ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] && ([UIScreen mainScreen].scale == 2.0))
于 2013-06-03T13:00:21.167 回答
0

您不必包含非视网膜艺术品。只使用非@2x 命名的图像;但是,这将导致非视网膜设备的性能不佳,因为它们也较旧且硬件较慢(iPad mini 除外)。您不能基于硬件排除设备(可能通过设置最低 iOS 版本除外)。

于 2013-06-03T12:44:36.513 回答