【问题标题】:Using different storyboards for different screen sizes? universal xcode app为不同的屏幕尺寸使用不同的故事板?通用 xcode 应用程序
【发布时间】:2016-03-07 00:52:57
【问题描述】:

我提交了我的应用以供审核并收到错误

2.10 - iPhone 应用程序也必须在 iPad 上运行,无需修改,以 iPhone 分辨率和 2X iPhone 3GS 分辨率运行。我们注意到,在运行 iOS 9.1 的 iPad 上审核时,您的应用程序没有以 iPhone 分辨率运行,这违反了 App Store 审核指南。我们附上了屏幕截图供您参考。具体来说,当我们在 iPad 上点击以使用 Facebook 登录时,不会产生任何操作,并且我们无法让应用程序继续前进。

我已经为 ipad 复制了第二个故事板,其中包含信息 plist 和常规设置等。我还需要为不同的 iphone 设备制作不同的故事板,从图像中可以看出,我的设计无法使用自动约束。

我的问题是:我是否只是像在故事板 1 上一样将 IB 到旧视图控制器并在每个 VC 上复制代码,还是必须为新的 VC 创建所有新的 VC故事板包括应用程序委托?其次,我是否必须在我的应用程序委托中编写代码来说明根据屏幕大小使用哪个故事板或 xcode 7 在 info plist 中执行此操作?我似乎只能找到我只知道 swift 的 objc 代码。

so question obj c xcode 5

link ipad and main storyboard

【问题讨论】:

    标签: ios xcode ipad xcode7 ios-universal-app


    【解决方案1】:

    由于我的设计限制,我无法为所有设备尺寸使用一个故事板,因此为了解决我的问题,我将此代码添加到我的应用程序委托中:

     func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    
        var bounds: CGRect = UIScreen.mainScreen().bounds
        var screenHeight: NSNumber = bounds.size.height
        var deviceFamily: String
    
        var mainView: UIStoryboard!
        mainView = UIStoryboard(name: "iphone35Storyboard", bundle: nil)
        let viewcontroller : UIViewController = mainView.instantiateViewControllerWithIdentifier("iphone35") as UIViewController
        self.window!.rootViewController = viewcontroller
    
        if screenHeight == 480  {
            deviceFamily = "iPhoneOriginal"
            // Load Storyboard with name: iPhone4
            var mainView: UIStoryboard!
            mainView = UIStoryboard(name: "Main", bundle: nil)
            let viewcontroller : UIViewController = mainView.instantiateViewControllerWithIdentifier("iphone4") as UIViewController
            self.window!.rootViewController = viewcontroller
    
        } else {
    
            var mainView: UIStoryboard!
            mainView = UIStoryboard(name: "IpadStoryboard", bundle: nil)
            let viewcontroller : UIViewController = mainView.instantiateViewControllerWithIdentifier("ipad") as UIViewController
            self.window!.rootViewController = viewcontroller
    
            if screenHeight == 920 {
                deviceFamily = "Pad"
                // Load Storyboard with name: ipad
                var mainView: UIStoryboard!
                mainView = UIStoryboard(name: "IpadStoryboard", bundle: nil)
                let viewcontroller : UIViewController = mainView.instantiateViewControllerWithIdentifier("ipad") as UIViewController
                self.window!.rootViewController = viewcontroller
            }
        }
    }
    

    然后创建一个新的故事板,将主故事板复制并粘贴到第二个故事板上并调整大小。它的工作原理我对不同的 iphone 尺寸做了同样的事情。希望这对其他人有帮助。

    【讨论】:

      【解决方案2】:

      您不需要不同的故事板,您只需要一个!您所要做的就是使用尺寸等级。您可以在单个故事板上工作并设置不同的布局约束,甚至可以为每个尺寸类别设置不同的 UI 元素。

      Apple documentation

      Tutorial

      【讨论】:

      • 您好,感谢您的教程,我现在要去看看。您能回答我一个问题吗,即使我的设计设置如上图所示,您是否看到背景图像在上传的实际背景图像中具有年龄和生物框的方式,所以当我添加时我的问题是什么年龄的文本字段数字不在年龄框中,它将显示在不同的屏幕上?我只是担心自适应布局只是为了适应一切,而不是真正将它们保持在我需要它们所在的确切位置。如果你得到我?
      • @Grace 您需要为情节提要中的每个视图设置布局约束。在您的情况下,您可能希望将年龄居中放在框中。如果您为 any any 配置设置了约束,那么任何大小类配置都将使用它!
      • 大小类在某些设计案例中不够动态。当 iPhone 7 的宽度和高度非常不同时,它会将 iPhone 7 的宽度和高度视为与 4s (C:R) 相同。
      • 苹果链接坏了
      猜你喜欢
      • 2013-11-08
      • 1970-01-01
      • 2019-10-24
      • 2019-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多