2

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

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

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

现在的问题是我的老板正在为此吃尽苦头,他告诉我我们可以只编写一个类,并且在运行时应用程序将在 iphone 或 ipad 设备或模拟器中启动时,视图控制器将相应地调整帧我已经通过使用上述方法做到了这一点,但他说如果你这样做,那么代码会增加,你必须遭受巨大的头痛,所以实际上他是对的,但还没有找到任何替代解决方案,所以在说这个之前做不到我想听听专家的建议

4

3 回答 3

1

我有 3 组课程:

  • 基类:这是共享逻辑所在
  • iPhone 类:包括 UI 在内的 iPhone 特定逻辑在此处
  • iPad 类:iPad 特定逻辑,包括 UI 在这里

我在基类中拥有尽可能多的东西,但是对于逻辑分离的时代,拥有不同的类要容易得多。IMO,挖掘代码以查找异常会很痛苦。

我发现这个博客很有帮助(不是我的)

于 2011-05-21T05:45:18.680 回答
1

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

实际上,我最近写了一篇关于这个问题的小文章。

您还可以使用:

#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.  */
}
于 2011-05-21T06:16:11.490 回答
0

这算不上问题 。您必须创建一个通用应用程序。

文件--->新建项目--->windows应用程序

然后选择一个产品Universal

于 2011-05-21T05:58:31.553 回答