有没有办法从构建中排除非视网膜设备,是否允许在提交过程中使用?我不是针对iPad或iPad mini。我认为3GS用户很少,设备无法处理任何过于先进的用户。
我不想将非视网膜艺术品纳入包中。
答案 0 :(得分:2)
您不应该排除非视网膜设备,因为iPad mini是非视网膜的。此外,没有构建选项可以排除非视网膜设备。
因此,非视网膜设备将仅使用视网膜图像运行并耗尽更多内存,这可能会使内存耗尽。 如果您确实设法排除iPhone 3GS,您的应用程序仍然需要在iPad mini上运行,即使您的应用程序是iPhone,它也应该在任何iPad上运行。
答案 1 :(得分:2)
过去,您可以使用this blog post中描述的方法。阅读完帖子后,请参阅this updated device capabilities matrix。
基本上,您选择一组UIRequiredDeviceCapabilities键,将受支持的设备集限制为视网膜显示的设备。
不幸的是,正如你从矩阵中看到的那样,iPad mini在Retina显示屏上没有这种方法(它没有Retina显示屏,但它没有缺少任何其他功能可以用来将它从一套其他Retina显示设备)。
编辑:根据您的编辑,由于您不是为iPad / iPad mini构建,您可以使用上述方法并需要前置摄像头。
答案 2 :(得分:0)
您不必包含非视网膜艺术品。只使用非@ 2x命名图像;然而,这会导致非视网膜设备的性能不佳,因为它们也较旧并且硬件较慢(不包括iPad mini)。您不能排除基于硬件的设备(可能通过设置最低iOS版本除外)。
答案 3 :(得分:0)
不幸的是,不可能。
您可以查看:Information Property List Key Reference,您可以在其中看到可以配置您的应用需要运行的内容。
也许您可以查看会话: UIRequiredDeviceCapabilities 尝试将其调整为仅在具有特定功能组合的设备上运行,但就像您在页面上看到的那样,它是无法根据设备显示进行配置。
-
您只能支持具有更强大硬件的设备的一个示例是定义您需要使用只有最新设备具有的硬件:前置摄像头。 (iPad 2有它,而不是视网膜,只是你可以利用的功能的一个例子。)
也许在您的应用内,您可以检查比例,并采取两种不同的方法。
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]
&& [[UIScreen mainScreen] scale] == 2.0) {
[self runTheFeature];
} else {
[self alertYourDeviceSucks];
}
答案 4 :(得分:0)
您不应该排除非视网膜设备,如最后一个答案所说,但如果您觉得必须这样做,那么您可以这样做:
1-在您的应用委托中检查在将主视图控制器添加到UIWindow之前设备是否具有视网膜显示
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))