针对不同的屏幕尺寸使用不同的故事板?通用xcode应用程序

时间:2015-12-02 16:57:41

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

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

  

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

我已经使用信息plist和常规设置复制了ipad的第二个故事板。我还需要为不同的iphone设备制作不同的故事板,如图所示,我的设计无法通过自动约束进行。

if you look at the age it is not able to go in the box in the last 3 only the first

我的问题是什么:我只是对旧的View控制器IB,就像我在故事板1上做的那样,并在每个VC上重复代码,或者我是否必须为新的VC创建所有新的VC故事板包括应用代表?其次,我必须在我的app委托中编写代码,以根据屏幕大小或剂量说明使用哪个故事板xcode 7在info plist中执行此操作?我似乎只能找到objc代码,我只知道很快。

so question obj c xcode 5

link ipad and main storyboard

2 个答案:

答案 0 :(得分:6)

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

 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尺寸相同。希望这有助于其他人。

答案 1 :(得分:4)

您不需要不同的故事板,只需要一个!您所要做的就是使用大小类。您可以处理单个故事板并设置不同的布局约束,甚至可以为每个大小类设置不同的UI元素。

Apple documentation

Tutorial