【问题标题】:Making an universal app on iOS在 iOS 上制作通用应用程序
【发布时间】:2014-01-03 05:31:10
【问题描述】:

我已经阅读了很多关于从 iPhone 应用程序制作通用应用程序的信息。 但我没有找到任何关于我的情况的信息: 我的应用程序的一部分是在 Storyboard 中构建的,但在 .xib-s 中创建的视图很少。 如何连接它并在其中创建通用应用程序?

【问题讨论】:

  • 你能说得更具体点吗?创建通用应用程序时,您经常(但不总是)为 iPad 和 iPhone/iPod Touch 使用单独的故事板和/或 .xib 文件。然后,您的视图控制器会根据运行的设备选择要加载的设备。
  • 但是我应该在哪里检查设备类型?在每个控制器的 Init 方法中?

标签: ios iphone objective-c xcode universal


【解决方案1】:

我认为最常见的情况是在实例化视图控制器之前检查设备类型。此时,您可以使用适当的 nib 实例化适当的视图控制器。请注意,对于 iPad 和 iPhone,您可以选择使用:

  • 不同的 UIViewControllers(iPad 专用和 iPhone 专用)
  • 相同的 UIViewController 但具有不同的 nib。
  • 具有相同笔尖的相同 UIViewController(使用调整大小或自动布局来放大/缩小)

如果您使用具有相同笔尖的相同视图控制器,您显然可以跳过设备检查(因为不会有代码差异)。此外,您无需在无法在多种设备类型上运行的代码区域进行设备检查。例如,仅 iPad 的视图控制器中的代码可以假定 iPad 并跳过设备检查。您确定只能在 iPhone 上运行的代码也可以跳过检查并假设 iPhone。就是说尽量不要在代码中乱扔这样的检查。

- (IBAction) handleButtonPress {

    UIViewController *vc = nil;

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
        vc = [[MyIPadViewController alloc] initWithNibName:@"MyIPadViewController" bundle:nil];
    } else {
        vc = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
    }

    [self presentViewController:vc animated:YES completion:NULL];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-15
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    • 2014-08-18
    • 2015-09-17
    相关资源
    最近更新 更多