[英]iOS Universal apps, and nibs / xibs
我有一个通用的应用程序正在开发中。
该应用程序使用NIB,例如,
ExcitingViewController.xib
ExcitingViewController~iPad.xib
在iPhone或iPad模拟器上,将自动选择适当的变体(即,在iPad上选择后缀为〜iPad的变体而无需更改任何代码)。
但是,在真正的iPad上,始终使用iPhone变体。
我曾经提到过要通过编程选择合适的NIB,但是由于这是在模拟器上自动进行处理的,所以我不明白为什么它不能真正地实现目标。
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
{
excitingViewController = [[ExcitingViewController alloc] initWithNibName:@"ExcitingViewController" bundle:nil];
}
else
{
excitingViewController = [[ExcitingViewController alloc] initWithNibName:@"ExcitingViewController~iPad" bundle:nil];
}
有关在真实设备上自动选择〜iPad变体的任何提示?
(顺便说一句,模拟器通常在表现正确行为方面完全可靠,因此找到这些差异/错误很烦人)。
抱歉,我参加聚会很晚,但是您尝试过以下方法:
这应该与设备无关
[[ExcitingViewController alloc] initWithNibName:@"ExcitingViewController" bundle:nil]
应该在两种设备上都可以工作,而不必检查用户界面习惯用法。
资源编程指南中对此进行了介绍。
我在项目中所做的是重写initWithNibName / initWithCoder / init并检查它是否是iPad,如果是,请加载适当的iPad。
我在pch中有一个宏,用于iPad检查:
// iPad detection
#ifdef UI_USER_INTERFACE_IDIOM
#define IS_IPAD() (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#else
#define IS_IPAD() (false)
#endif
然后我只在需要的地方在代码中使用IS_IPAD()
好的,答案似乎确实是您需要以编程方式处理此问题(如问题中所示),这似乎是Apple错失的机会,但也许还有更多机会。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.