适用于iPhone和iPad的通用应用程序概念

时间:2011-05-21 05:38:25

标签: iphone objective-c xcode ipad universal-binary

我是通用应用程序的菜鸟所以请帮助我,让我知道如果可以做到这一点,我正在创建一个通用的应用程序,为此我已经编写了代码,并在我的每个视图控制器中进行设置在iPhone和iPad组和运行时,我正在识别设备,无论是iphone还是ipad,我使用的是以下方法

 if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    {
        myiPad_View *ipadObj = [[myiPad_View alloc]init];
        [self.window addSubview:ipadObj.view];

    }
    else
    {
        myiPhoneView *obj = [[myiPhoneView alloc]init];
        [self.window addSubview:obj.view];
    }

现在查询是我的老板正在吃我的脑袋他告诉我,我们可以只编写一个类,并且在运行时,当应用程序将在iphone或ipad设备或模拟器中启动时,视图控制器将调整相应的框架,我已经通过使用上述方法完成了这个,但他说,如果你喜欢这样,那么代码会增加,你必须遭受巨大的麻烦,所以实际上他是对的,但没有找到任何替代解决方案,所以在说不能这样做之前我想考虑一些专家意见

3 个答案:

答案 0 :(得分:1)

我有3组课程:

  • 基类:这是共享逻辑的地方
  • iPhone类:包含UI的iPhone特定逻辑
  • iPad类:iPad特定逻辑,包括用户界面

我尽可能地在基类中,但是在逻辑分离的时候,拥有不同的类要容易得多。通过代码寻找异常将是一种痛苦,IMO。

我发现this blog有帮助(不是我的)

答案 1 :(得分:1)

您的上述方法实际上也是我在某些应用中确定设备的方式。

我最近在这个问题上写了little piece

您还可以使用:

#define IDIOM    UI_USER_INTERFACE_IDIOM()
#define IPAD     UIUserInterfaceIdiomPad
#define IPHONE   UIUserInterfaceIdiomPhone

if ( IDIOM == IPAD ) 
    NSLog(@"Device is iPad.");
else 
    NSLog(@"Device is iPhone or iPod touch.");

if ( [[[UIDevice currentDevice] model] isEqualToString:@"iPod touch"] ) 
{
    NSLog(@"Device is an iPod touch");
    /*  same goes for "iPhone", "iPad" etc.  */
}

答案 2 :(得分:0)

这不是问题。你必须创建一个通用的应用程序。

  

文件--->新项目---> windowsapplication

然后选择产品Universal