【问题标题】:Make an application work on both iPhone and iPad让应用程序同时在 iPhone 和 iPad 上运行
【发布时间】:2013-10-22 04:25:54
【问题描述】:

我想让我的 iPhone 应用也能在 iPad 上运行。

如果我使用 iPad 模拟器运行它,它确实可以工作,但该应用没有出现在 iPad 应用商店中,而且看起来很奇怪。

是否可以为 iPad 创建另一个 .xib 文件?我知道如何添加新的 iPad .xib 文件,但如果正在使用的设备是 iPad,我不知道如何将 RootViewController.xib 实际更改为 RootViewController_iPad.xib

我已经有了确定设备是否是 iPad 的代码,我不想想使用 auto-layout,因为如果它们是我想在视图中添加不同的东西使用 iPad(例如使用不同的图像)。

我想让我的 iOS 应用程序在 iPhone 和 iPad 上看起来都很好,并且每个都有一个单独的 .xib 文件。是否可以将默认的.xib 文件从RootViewController 更改为RootViewController_iPad

【问题讨论】:

标签: ios objective-c xib nib


【解决方案1】:

为了使应用程序能够在 iPhone 和 iPad 上运行,需要遵循以下步骤。

  1. 在创建项目之前,请在设备部分选择通用。
  2. 在应用程序中:didFinishLaunchingWithOptions:设置条件来检查设备。
  3. 如果设备是 iPad,则加载 iPad 屏幕,如果设备是 iPhone,则加载 iPhone 屏幕。
  4. 确保遵循 MVC 模式,以便在两个屏幕中轻松填充数据。

【讨论】:

  • 如何加载 iPad 屏幕?
  • 在应用程序中:didFinishLaunchingWithOptions: 方法设置一个条件,例如检查 UI_USER_INTERFACE_IDIOM.. 如果是 iPad 则加载屏幕并设置为 windows rootViewController。
  • if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { [self.window addSubview: loadingViewcontroller.view]; }
  • 您是否为 iPad 创建了单独的课程。如果是,则检查 nib 文件连接了哪个类。
  • 没关系,我必须给我的文件所有者一个自定义类 RootViewController 才能让它们显示出来。
【解决方案2】:

@class 对出口或动作没有影响,它只告诉编译器有一个类名,没有包含有关属性或方法的信息。

如果你想为 iPad 创建一个 xib,不要为它创建一个新类,只需创建一个新的 xib 并将文件的所有者设置为与拥有 iPhone xib 的对象相同。然后您需要在application: didFinishLaunchingWithOptions: 中添加检查以加载正确的 xib。

最好的选择是在创建项目时告诉 Xcode 你想要一个通用应用程序。

【讨论】:

  • 您可以在创建后使其通用。我将如何加载 iPad xib?
  • 您应该查看UIViewController 的文档,特别是-initWithNibName: bundle:。您可以检查正在使用的设备类型并根据该设备类型决定加载哪个 nib(nib = xib 的编译版本)
【解决方案3】:

这里的关键是它必须是UNIVERSAL application。这是您第一次设置应用程序时的设置。您最终会得到 2 个 UI(故事板或 xib 文件)。

您必须为 ipad 和 iphone 创建 2 个单独的 UI。您可能可以在大部分代码中使用主类本身,但是您必须基本上将代码写成

if its iphone.....

if its ipad ......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    相关资源
    最近更新 更多