60

新款 iPad Mini 的屏幕尺寸为 7.9 英寸。它有视网膜显示器吗?它会自动扩展现有的 xib 和故事板,还是我们必须创建每个版本的两个版本?

我们处理它的方式是否类似于处理 iPhone 5 的方式?

如何创建定义或条件来查看设备是否正在运行 iPad Mini?

4

9 回答 9

60

应用程序将正常工作。但是如果你有一些非常小的 UI 元素。由于屏幕尺寸减小,您可能需要重新访问它们。

于 2012-10-23T18:49:44.860 回答
56

如果您的应用程序在 iPad 1 或 iPad 2 上运行,它将在新的 iPad mini 上按原样运行。mini 上没有视网膜显示屏。从应用程序的角度来看,它与 iPad 2 相同。

编辑:有人询问如何确定应用程序何时在 iPad mini 上运行。对此没有 API 检查。屏幕尺寸没有帮助。UI_USER_INTERFACE_IDIOM()没有帮助。在有人真正拥有之前,没有办法知道它是否UIScreenMode pixelAspectRatio有任何不同(可能与 iPad 2 相同)。

这只剩下一种可能性 - 获取machinefromuname()并硬编码对该值的检查。这绝不是一种理想的方法。在撰写本文时,我们不知道价值是什么。也许iPad5,x假设第四代 iPad 是iPad4,x

编辑:到目前为止,我已经看到一份报告称 iPad mini 返回 iPad2,5(是的,这是两个逗号五)以及 iPad2,6 和 iPad2,7 作为机器名称。

于 2012-10-23T18:23:08.103 回答
7

为 iPad 2 分辨率构建应用程序。新的 iPad Mini 没有视网膜,分辨率为 1024x768,这意味着已经在 iPad 1 或 iPad 2 上运行的应用程序会自动在 iPad Mini 上运行。

于 2012-10-23T18:22:59.730 回答
7

我认为 Phil Schiller(Apple 的高级副总裁)在发布 iPad Mini 的新闻发布会上说得最好(大约 53:00 进入主题演讲)

我们选择什么屏幕尺寸,为什么?团队非常努力地思考这个问题。我们希望 iPad 能够运行为 iPad 编写的所有令人惊叹的软件,而无需开发人员做任何工作......

然后他接着说:

...而且像素更容易记住,因为它们完全相同。最初的 iPad 和 iPad 2 的尺寸为 1024 x 768,而新款 iPad Mini 的尺寸为 1024 x 768。这意味着为 iPad 创建的所有软件都可以在 iPad Mini 上正常运行。

因此,总而言之,为了回答您的问题,iPad Mini 没有 Retina 显示屏,您无需做任何额外的工作。iPad Mini 将利用您已经为 iPad 创建的故事板或 xib。

然后就检测而言,我还找不到任何可以证明这一点的东西(因为它们还没有发布),但我敢打赌,下面会输出“iPad Mini”。

NSLog(@"%@",[[UIDevice currentDevice] model]);

编辑:

NSLog(@"\nMachine ID: %@\nModel: %@\nLocalized Model: %@",machineName(),[[UIDevice currentDevice] model],[[UIDevice currentDevice] localizedModel]);

NSString *machineName()
{

    struct utsname systemInfo;
    uname(&systemInfo);

    return [NSString stringWithCString:systemInfo.machine
                              encoding:NSUTF8StringEncoding];
}

在我的 16GB iPad Mini(仅限 Wifi)上返回:

机器 ID:iPad2,5
型号:iPad
本地化型号:iPad

于 2012-10-25T07:46:47.287 回答
7

如果 iPad Mini 和非视网膜 iPad 的屏幕尺寸无论如何都相同,你不能使用类似的东西来确定设备屏幕是 iPhone 5 还是 iPhone 4:

#define IS_WIDESCREEN5 ( [ [ UIScreen mainScreen ] bounds ].size.height == 568 )
#define IS_WIDESCREEN4 ( [ [ UIScreen mainScreen ] bounds ].size.height == 480 )

因此,对于 iPad Mini 和非视网膜 iPad,请执行以下操作:

#define IS_PAD ( [ [ UIScreen mainScreen ] bounds ].size.height == 512 )

对于视网膜 iPad 的做法:

#define IS_RETINA_PAD ( [ [ UIScreen mainScreen ] bounds ].size.height == 1024 )

这应该区分这两种类型的屏幕,并绕过为了缩放目的而精确定位模型的需要。另一种方法是使用自动布局,但是没有它我会有更好的控制感。

我希望这对您问题的第二部分有所帮助。祝你好运 :)

于 2013-05-11T04:59:55.507 回答
4

iPad mini uses the same resolution as the non-retina iPads, iOS will use 1x graphics. Refer to this link... link

于 2013-02-01T10:12:36.903 回答
4

你不必做任何不同的事情。它应该像苹果所说的那样自动工作。分辨率仍与 iPad 相同。

于 2012-10-23T19:04:45.373 回答
3

ipad mini 的图像与 ipad 1 和 2 相同。但建议您也将@2x 图像用于视网膜屏幕。因为,一旦您的应用程序在应用商店上架,您就无法阻止人们在具有视网膜显示屏的 ipad 上下载它。

所以在这个时候,你必须为视网膜和非视网膜制作图像。

以编程方式,ipad 视网膜显示不需要单独的 xib 文件。只需为所有图像资产保留 imageName@2x.png 即可。

于 2013-02-22T23:49:22.347 回答
0

要检测 iPad Mini(任何型号),我正在使用此代码(在 iOS 10.x 上测试):

- (BOOL)isIPadMini {
   return [[UIDevice currentDevice].name hasPrefix:@"iPad Mini"];
}
于 2017-02-21T10:12:21.610 回答