【问题标题】:Universal Apps concept for iPhone and iPad适用于 iPhone 和 iPad 的通用应用程序概念
【发布时间】:2011-05-21 05:38:24
【问题描述】:

我是通用应用程序的菜鸟,所以请帮助我,让我知道这是否可以完成,我正在创建一个通用应用程序,为此我编写了代码并在我的每个视图控制器中进行了设置在 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 设备或模拟器中启动时,视图控制器将调整因此,我使用上述方法完成了此操作,但他说如果您这样做,那么代码将增加,您必须遭受巨大的头痛,所以实际上他是对的,但还没有找到任何替代解决方案,所以在说这不能做之前,我想听取一些专家的建议

【问题讨论】:

  • 注意:如果你的目标是 iOS 3.2 或更高版本,你可以像这样直接访问 UIDevice 类: if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { ... }跨度>

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


【解决方案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】:

    我有 3 组课程:

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

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

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

    【讨论】:

    • 完全同意这一点,我看到太多次围绕布局和操作逻辑的 IF 语句,它只会让你的类难以管理和丑陋。保持简单,核心类和平台特定的后代。
    【解决方案3】:

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

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

    然后选择产品Universal

    【讨论】:

      猜你喜欢
      • 2013-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-05
      • 1970-01-01
      • 2012-08-17
      相关资源
      最近更新 更多