Несколько раскадровок в Swift

У меня есть приложение, которое имеет 4 раскадровки, каждый для другого устройства (iphone4, 5, 6, 6+). Я попытался использовать автоматические ограничения, но поскольку мое приложение сложно, я не смог понять это. Я слышал, что если у вас есть несколько раскадровок, должен быть способ указать, какую раскадровку использовать в делегате приложения. Как указать правильную раскадровку для соответствующего устройства в делегате приложения? В настоящее время у меня есть четыре раскадровки, по имени:

iPhone4s для.раскадровка
от iPhone5.раскадровка
iPhone6 покрывает.раскадровка
iphone6plus.раскадровка

спасибо.

3 ответов


реализуйте функцию, которая извлекает раскадровку, когда указано ее имя.

func getStoryBoard(name : String)-> UIStoryboard
{
    var storyBoard = UIStoryboard(name: name, bundle: nil);
    return storyBoard;
}

измените метод делегата приложения, например:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
{
    var storyBoard = getStoryBoard("Main") // Change the storyboard name based on the device, you may need to write a condition here for that
    var initialViewController: UIViewController = storyBoard.instantiateInitialViewController() as! UIViewController
    self.window?.rootViewController = initialViewController
    self.window?.makeKeyAndVisible()
    // Override point for customization after application launch.
    return true
}

по моим словам, в эти дни мы используем режим который знает, как расположить его вид в зависимости от размера экрана и ограничений

Как вы просили, вы можете переопределить раскадровку из AppDelegate в методе applicationdidFinishLaunchingWithoptions

    let storyBoard : UIStoryboard = UIStoryboard(name: "iphone4s", bundle: nil)
    //you can check your device and override the storyboard name
    let initialViewController: UIViewController =  storyBoard.instantiateInitialViewController()!
    self.window?.rootViewController? = initialViewController

для запуска различных раскадровок для различных устройств необходимо переопределить объект rootViewController.

       var myDeviceStoryboard : UIStoryboard = UIStoryboard(name: "DeviceStoryboard", bundle: NSBundle.mainBundle())
var firstVC : MyDeviceFirstViewController = myDeviceStoryboard.instantiateViewControllerWithIdentifier("MyDeviceFirstViewController") as! MyDeviceFirstViewController
self.window?.rootViewController = MyDeviceFirstViewController //This should be a navigation controller

кроме того, вам нужно переопределить несколько параметров в настройках проекта и раскадровке. Смотрите изображения.enter image description here