Несколько раскадровок в 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
кроме того, вам нужно переопределить несколько параметров в настройках проекта и раскадровке. Смотрите изображения.