我正在尝试编写应用而不使用 nib ,我会以编程方式执行此操作。
现在的问题是,我如何支持 iPad 和 iPhone ?显然,我不能用
来做if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
// load iPad nib
} else {
// load iPhone nib
}
如果我创建了2个 ViewControllers ,则IBAction
将是多余的。
有什么建议吗?
答案 0 :(得分:3)
您可能只需在applicationDidFinishLaunching
中找出设备类型,然后为每个设备加载单独的控制器。但是如果你想为所有设备只有一个实现,那么做这样的检查:
if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad)
{
//do some iPad stuff
}
else
{
CGFloat screenH = [UIScreen mainScreen].bounds.size.height;
if([UIScreen mainScreen].scale == 2.f && screenH == 568.0f)
{
//do iPhone 5 stuff
}
else
{
//do iPhone 4S and iPhone 4 stuff
//the dimensions are the same however, if you want to do iPhone 4S specific stuff
// you'll need to do additional checks against video resolution or other differences etc
}
}
答案 1 :(得分:0)
CGFloat height = [UIscreen mainScreen].bounds.size.height;
if(height==568.00 || height == 480.0)
{
//For iphone 5 and iphone 4
}
else
{
//For ipad
}
答案 2 :(得分:0)
您可以在AppDelegate中使用此代码
- (BOOL) isPad()
{
if(UI_USER_INTERFACE_IDIOM)
{
return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad);
}
else
{
return NO;
}
}
的一些信息
OR
您可以检查屏幕的高度和宽度,以了解它是iPhone还是iPad
CGRect screen = [[UIScreen mainScreen] bounds];
CGFloat width = CGRectGetWidth(screen);
CGFloat height = CGRectGetHeight(screen);
答案 3 :(得分:0)
如果你没有使用任何笔尖,一切都是以编程方式进行的,你不想为iphone和ipad创建两个视图控制器。记住不要依赖于任何静态值。即你的计算应该根据self.view.bounds
这样的事情(我的意思是创建视图/子视图)。然后,如果某些仅在iPad中支持的特定功能会进行检查
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
一个视图控制器为您完成了所有工作。