我可以为 iPhone 和 iPad(纵向和横向)使用单独的故事板吗?

Posted

技术标签:

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

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

希望确保这符合 APPLE 指南。

【问题讨论】:

查看答案***.com/a/8863381/5109911 @SaintThread:非常感谢你。但我担心的是我有一些视图控制器,我只需要在 iPad 中,其中一些用于肖像,一些用于风景......跨度> 这个问题是题外话,因为它是关于 App Store 合规性,而不是编码问题。请看Are developer-centric questions about application stores on topic for Stack Overflow? 【参考方案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 个故事板,因为它们继承了不同的大小类。

【讨论】:

以上是关于我可以为 iPhone 和 iPad(纵向和横向)使用单独的故事板吗?的主要内容,如果未能解决你的问题,请参考以下文章

启动应用程序 Iphone 纵向和 Ipad 横向

3 个针对 iphone 纵向、横向和 ipad 纵向的媒体查询

Iphone 应用程序在横向和纵向模式下都可以正常工作,但在 ipad 中它只能在一种模式下工作?

在 iPad/iPhone 上在纵向和横向之间切换时响应站点被放大

支持iPhone 6和iPhone 6+,具有不同的启动/启动屏幕图像,适用于iPad纵向和横向方向

支持 iPhone 6 和 iPhone 6+,针对 iPad 纵向和横向方向具有不同的启动/启动屏幕图像