处理iPad Mini屏幕尺寸

时间:2012-10-23 18:21:04

标签: ios ipad-mini

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

我们处理它的方式与我们处理iPhone 5的方式类似吗?

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

9 个答案:

答案 0 :(得分:60)

应用程序可以正常运行。但是如果你有一些非常小的UI元素。由于屏幕尺寸的减小,你可能想重新访问它们。

答案 1 :(得分:56)

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

编辑:有人询问如何确定应用程序何时在iPad mini上运行。没有API检查。屏幕尺寸没有帮助。 UI_USER_INTERFACE_IDIOM()无济于事。直到有人真的有一个,没有办法知道UIScreenMode pixelAspectRatio是否有任何不同(可能与iPad 2相同)。

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

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

答案 2 :(得分:7)

构建适用于iPad 2分辨率的应用。新的iPad Mini是非视网膜,分辨率为1024x768,这意味着已经在iPad 1或iPad 2上工作的应用程序可自动在iPad Mini上运行。

答案 3 :(得分:7)

我认为菲尔席勒(Apple的高级副总裁)表示最好在press event推出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

答案 4 :(得分: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 )

这应区分两种类型的屏幕,并且无需精确定位模型以达到比例目的。另一种方法是使用自动布局,但是没有它我会有更好的控制感。

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

答案 5 :(得分:4)

你不必做任何不同的事情。它应该像苹果提到的那样自动运行。分辨率仍然与iPad相同。

答案 6 :(得分:4)

iPad mini使用与非视网膜iPad相同的分辨率,iOS将使用1x图形。 请参阅此链接... link

答案 7 :(得分:3)

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

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

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

答案 8 :(得分:0)

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

- (BOOL)isIPadMini {
   return [[UIDevice currentDevice].name hasPrefix:@"iPad Mini"];
}