处理iPad迷你屏幕尺寸
新款iPad Mini的屏幕尺寸为7.9英寸。 它有视网膜显示吗? 它会自动缩放现有的xib和故事板,还是我们必须创build两个版本?
我们处理的方式与我们处理iPhone 5的方式类似吗?
如何创build一个定义或条件来查看设备是否在运行iPad Mini?
如果您的应用在iPad 1或iPad 2上运行,则它将在新的iPad mini上运行。 mini上没有视网膜显示。 从应用程序的angular度来看,它与iPad 2完全相同。
编辑:有人问到如何确定一个应用程序在iPad mini上运行。 没有API检查。 屏幕大小没有帮助。 UI_USER_INTERFACE_IDIOM()
没有帮助。 直到有人真的有一个,没有办法知道是否UIScreenMode pixelAspectRatio
是任何不同的(可能是相同的iPad 2)。
这留下了唯一的可能性 – 从uname()
获取machine
并硬编码检查这个值。 这不是一个理想的方法。 而在撰写本文时,我们不知道这个价值是什么。 也许iPad5,假设第四代iPad是iPad4,X 。
编辑:到目前为止,我已经看到一个报告,iPad的iPad迷你返回iPad2,5(是的,这是一个两个逗号五)以及iPad2,6和iPad2,7的机器名称。
应用程序将正常工作。 但是,如果你有一些非常小的UI元素。 由于屏幕尺寸减小,您可能需要重新访问它们。
为iPad 2解决scheme构build应用程序。 新的iPad Mini是非视网膜,分辨率为1024×768,这意味着已经在iPad 1或iPad 2上工作的应用程序将自动在iPad Mini上运行。
我认为苹果公司的高级副总裁菲尔·席勒(Phil Schiller)在发布iPad Mini的新闻发布会上表示最好(大约53:00)
我们select什么屏幕尺寸,为什么? 这个团队真的很努力地思考这个问题。 我们需要一台能够运行所有为iPad编写的惊人软件的iPad,而无需开发人员做任何工作。
他接着说:
…像素更容易记住,因为它们完全一样。 原来的iPad和iPad 2是1024×768,新的iPad Mini是1024×768。 这意味着为iPad创build的所有软件都可以在iPad Mini上运行。
因此,总而言之,为了回答您的问题,iPad Mini没有Retina显示屏,您无需做任何额外的工作。 iPad Mini将利用您已经为iPad创build的故事板或xib。
那么就目前来说,我还找不到任何证据certificate这一点(因为它们还没有发布),但我敢打赌,下面将会输出“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迷你(仅限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 )
这应该区分这两种types的屏幕,并且避免需要精确定位尺寸的模型。 另一种方法是使用自动布局,但是如果没有它,我有更好的控制感。
我希望这可以帮助你的问题的第二部分。 祝你好运 :)
你不需要做任何不同的事情。 它应该像苹果提到的那样自动工作。 这个分辨率和iPad一样。
iPad mini使用与非视网膜iPad相同的分辨率,iOS将使用1xgraphics。 请参阅此链接… 链接
ipad mini的图像对于ipad 1和ipad 2是一样的。但是build议你也使用@ 2x图像用于视网膜屏幕。 因为,一旦你的应用程序在应用程序商店,你不能阻止人们在视网膜显示的iPad上下载它。
所以在这个时候,你必须为视网膜和非视网膜做图像。
以编程方式,单独的xib文件不需要ipad视网膜显示。 对于所有图片资源,也请保留imageName@2x.png。
要检测iPad Mini(任何型号)我使用此代码(在iOS 10.x上testing):
- (BOOL)isIPadMini { return [[UIDevice currentDevice].name hasPrefix:@"iPad Mini"]; }