新款 iPad Mini 的屏幕尺寸为 7.9 英寸。它有视网膜显示器吗?它会自动扩展现有的 xib 和故事板,还是我们必须创建每个版本的两个版本?
我们处理它的方式是否类似于处理 iPhone 5 的方式?
如何创建定义或条件来查看设备是否正在运行 iPad Mini?
应用程序将正常工作。但是如果你有一些非常小的 UI 元素。由于屏幕尺寸减小,您可能需要重新访问它们。
如果您的应用程序在 iPad 1 或 iPad 2 上运行,它将在新的 iPad mini 上按原样运行。mini 上没有视网膜显示屏。从应用程序的角度来看,它与 iPad 2 相同。
编辑:有人询问如何确定应用程序何时在 iPad mini 上运行。对此没有 API 检查。屏幕尺寸没有帮助。UI_USER_INTERFACE_IDIOM()
没有帮助。在有人真正拥有之前,没有办法知道它是否UIScreenMode pixelAspectRatio
有任何不同(可能与 iPad 2 相同)。
这只剩下一种可能性 - 获取machine
fromuname()
并硬编码对该值的检查。这绝不是一种理想的方法。在撰写本文时,我们不知道价值是什么。也许iPad5,x假设第四代 iPad 是iPad4,x。
编辑:到目前为止,我已经看到一份报告称 iPad mini 返回 iPad2,5(是的,这是两个逗号五)以及 iPad2,6 和 iPad2,7 作为机器名称。
为 iPad 2 分辨率构建应用程序。新的 iPad Mini 没有视网膜,分辨率为 1024x768,这意味着已经在 iPad 1 或 iPad 2 上运行的应用程序会自动在 iPad Mini 上运行。
我认为 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
如果 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 )
这应该区分这两种类型的屏幕,并绕过为了缩放目的而精确定位模型的需要。另一种方法是使用自动布局,但是没有它我会有更好的控制感。
我希望这对您问题的第二部分有所帮助。祝你好运 :)
iPad mini uses the same resolution as the non-retina iPads, iOS will use 1x graphics. Refer to this link... link
你不必做任何不同的事情。它应该像苹果所说的那样自动工作。分辨率仍与 iPad 相同。
ipad mini 的图像与 ipad 1 和 2 相同。但建议您也将@2x 图像用于视网膜屏幕。因为,一旦您的应用程序在应用商店上架,您就无法阻止人们在具有视网膜显示屏的 ipad 上下载它。
所以在这个时候,你必须为视网膜和非视网膜制作图像。
以编程方式,ipad 视网膜显示不需要单独的 xib 文件。只需为所有图像资产保留 imageName@2x.png 即可。
要检测 iPad Mini(任何型号),我正在使用此代码(在 iOS 10.x 上测试):
- (BOOL)isIPadMini {
return [[UIDevice currentDevice].name hasPrefix:@"iPad Mini"];
}