7

在 iOS 开发的旧 XIB 世界中,我能够创建一个 View Controller 和一个 XIB,并将它们用于 iPhone 和 iPad 环境。只需进行一些代码调整,XIB 就会调整大小和调整以适应不同的尺寸和纵横比。这使我能够降低两种布局随着时间的推移而不同步的风险。

在故事板的世界里也有同样的可能吗?默认情况下,Xcode 为我的通用应用程序创建了两个不同的故事板——一个用于 iPhone,一个用于 iPad。

如何同时使用一个情节提要?

谢谢!

更新:

Xcode 6 中的 Size Classes 将基本上实现 Universal Storyboards 的目标。更多信息在这里:

https://developer.apple.com/library/prerelease/ios/documentation/DeveloperTools/Conceptual/WhatsNewXcode/Articles/xcode_6_0.html

4

2 回答 2

7

简而言之……你不能。

在 iPhone 开发结束时,我使用一种变通方法来创建 iPad 故事板。

您必须找到 iPhone 故事板并使用终端复制它,并为其命名 Xcode 为您创建的 iPad 故事板。删除空的旧情节提要并打开新复制的情节提要,将 targetRuntime 属性更改为“iOS.CocoaTouch.iPad”而不是旧值“iOS.CocoaTouch”。

用 Xcode 打开 iPad 故事板,一切都在那里,但仍然需要安排并连接到 ViewController(包括接线的东西..)。它并不完美,但我通常这样做是为了保存一些容易出错的复制和粘贴(以及几个小时)。

如果您只想将您的应用程序定位到 iPhone 并将其交付给 iPad,您只需使用 iPhone Xib,您将在右上角获得 2x 小按钮。

2014 年末更新(Xcode 6 beta 发布后)

Xcode 6 现在允许您定义单个故事板并通过大小类概念,使其适应所有设备。这个解决方案有点令人困惑(特别是如果您熟悉如何在 Android 环境中解决这个问题),但恕我直言,这是正确的方向。

于 2013-10-06T16:59:50.260 回答
0

是的你可以。您可以在 Xcode 中的 General/Deployment info 下简单地选择相同的故事板

我有几个应用程序。他们共享很多视图控制器。如果您使用自由格式大小,则可以在故事板中创建单独的视图控制器和两个单独的 segue。

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
       [self performSegueWithIdentifier:@"Open VC" sender:sender];
} else {
       [self performSegueWithIdentifier:@"Open VC iPad" sender:sender];
}

唯一的缺点是您不能直接从情节提要(弹出框等)使用 iPad 特定控件,除非您切换到 iPad 情节提要

于 2014-02-17T03:34:32.710 回答