iOS - 支持iPad和iPad iPhone没有使用笔尖

时间:2013-03-14 05:11:56

标签: iphone ios ipad nib

我正在尝试编写应用而不使用 nib ,我会以编程方式执行此操作。

现在的问题是,我如何支持 iPad iPhone ?显然,我不能用

来做
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
    // load iPad nib
} else {
    // load iPhone nib
}

如果我创建了2个 ViewControllers ,则IBAction将是多余的。

有什么建议吗?

4 个答案:

答案 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;
   }

}

此链接提供了有关成语http://developer.apple.com/library/ios/#documentation/uikit/reference/UIKitFunctionReference/Reference/reference.html#//apple_ref/c/macro/UI_USER_INTERFACE_IDIOM

的一些信息

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)

一个视图控制器为您完成了所有工作。