【问题标题】:Can I use separate storyboards for iPhone and iPad(Portrait and Landscape)?我可以为 iPhone 和 iPad(纵向和横向)使用单独的故事板吗?
【发布时间】:2016-08-09 15:23:16
【问题描述】:

我正在开发一个支持 iPhone 和 iPad 的应用程序。 对于 iPad,我们同时支持纵向和横向 (iOS 9.0)。但出于某种原因,为了满足要求,我们必须为横向 UI 维护单独的故事板。这是否被 Apple 接受。

希望确保这符合 APPLE 指南。

【问题讨论】:

标签: ios storyboard


【解决方案1】:

如果您想要不同的故事板,您可以在主视图控制器中尝试以下代码:

Obj-C

- (void) viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
    NSString* storyboard = (size.width > size.height ) ? @"lanscape" : @"portrait";
    UIStoryboard* mainView = [UIStoryboard storyboardWithName:storyboard bundle:nil];
    UIViewController* viewcontroller = [mainView instantiateInitialViewController]
    // remove privious view controller
    // add newViewcontroller
}

斯威夫特

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
    let storyboardName = (size.width > size.height ) ? "lanscape" : "portrait"

    var mainView: UIStoryboard!
    mainView = UIStoryboard(name: storyboardName, bundle: nil)
    if let newViewcontroller : UIViewController = mainView.instantiateInitialViewController() {
        // remove privious view controller
        // add newViewcontroller
    }
}

希望对你有帮助。

【讨论】:

  • 仅供参考 - 问题标记为 Objective-C,而不是 Swift。
【解决方案2】:

只有当 iPad 需要 2 个方向(横向和纵向)并且每个方向的 UI 发生巨大变化时,您才能为 iPhone 和 iPad 使用两个单独的故事板。由于 iPad 的尺寸等级对于两个方向都是正则 - 正则,您仍然可以继续在一个故事板中构建 UI。

在某些情况下,您可能无法在同一尺寸等级下针对不同方向继续操作约束或视图。它会变得更加麻烦和过于复杂。

因此,如果 iPad 的两个方向的 UI 不同,最好将 2 个故事板(1 个用于 iPad 的另一个方向)分开。

但是对于 iPhone 和 iPad 的方向之一,您仍然可以继续使用 1 个故事板,因为它们继承了不同的大小类。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-14
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    • 2013-10-03
    • 2014-11-15
    • 1970-01-01
    相关资源
    最近更新 更多