iOS通用应用程序和nibs/xibs
我正在开发一个通用应用程序 该应用程序使用笔尖,我有,例如iOS通用应用程序和nibs/xibs,ios,nib,ios-universal-app,Ios,Nib,Ios Universal App,我正在开发一个通用应用程序 该应用程序使用笔尖,我有,例如 ExcitingViewController.xib ExcitingViewController~iPad.xib 在iPhone或iPad模拟器上,会自动选择相应的变体(即,在iPad上选择带有~iPad后缀的变体时,不会更改任何代码) 然而,在真正的iPad上,总是使用iPhone变体 我已经看到有人提到通过编程选择合适的NIB,但由于这是在模拟器上自动处理的,我不明白为什么它不能在真正的设备上 if ([[UIDevice c
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变体有什么提示吗
(顺便说一句,模拟器在显示正确行为方面通常是完全可靠的,因此发现这些差异/错误很烦人)。我在项目中所做的是用nibName/initWithCoder/init覆盖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()好的,答案似乎是你需要以编程的方式处理这个问题(如问题所示),这似乎是苹果错失的机会,但可能还有更多。对不起,我来晚了,但你有没有尝试过这样的方法:
- 激活ViewController~iphone.xib
- 激活ViewController~ipad.xib
[[ExcitingViewController alloc] initWithNibName:@"ExcitingViewController" bundle:nil]
应该可以在两种设备上工作,而不必检查用户界面习惯用法
这有点像是在书中写的