【问题标题】:How can I programmatically determine if my app iPad or iPhone如何以编程方式确定我的应用程序是 iPad 还是 iPhone
【发布时间】:2011-09-14 15:03:16
【问题描述】:

我的问题的重点是能够根据使用的设备动态包含/排除代码 我需要一些东西链接

#if (TARGET_IPHONE_SIMULATOR)

或

`#if (TARGET_OS_IPHONE)

但要指定设备是 ipad 还是 iphone

【问题讨论】:

标签: iphone objective-c ipad


【解决方案1】:

我在我的 _prefix.pch 文件中定义了两个宏,以便在我的代码中更容易(并且更易读),所以你可以这样做:

if (iPad) 

或

if (iPhone)

代码如下:

#ifndef iPad
    #define iPad    (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#endif
#ifndef iPhone
    #define iPhone  (UI_USER_INTERFACE_IDIOM() != UIUserInterfaceIdiomPad)
#endif

【讨论】:

  • 这适用于条件编译吗?我可以使用此代码 #include "SomeIphoneConditionals.h" 或 #include "SomeIphoneConditionals.h" ???
  • 如果你想让它们在你的所有文件中都可用,请将这些行放在你的 _prefix.pch 文件中:)
  • 不,我想在特定的类中包含一些头文件,我还需要创建一些有条件的方法(例如:我想创建一个在 ipad 上而不是在 iphone 上编译的方法) 这可能吗?
  • 不,这是不可能的。应用程序是在 iPhone 上还是在 iPad 上运行是在运行时确定的。代码是一样的(这就是通用应用的意思),所以你不能为此使用条件编译。
【解决方案2】:

不是条件编译,而是:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
    // iPhone Code
} else {
    // iPad Code
}

这只是UIDevice's -userInterfaceIdiom 方法的宏。

【讨论】:

    【解决方案3】:

    使用UI_USER_INTERFACE_IDIOM()

    它返回UIUserInterfaceIdiomPhone 或UIUserInterfaceIdiomPad

    【讨论】:

      猜你喜欢
      • 2011-03-02
      • 1970-01-01
      • 2010-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-29
      相关资源
      最近更新 更多