不同的StoryBoard为每个屏幕大小迅速

如何在Swift中为每个可能的屏幕大小设置不同的故事板?

我已经有了Objective-C的代码。

请不要自动布局,我不需要它。

但是,我怎么把它转换成Swift呢? 我是Swift新手。

这里是Objective-C的代码:

AppDelgate.m文件

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. // int screenHeight = [UIScreen mainScreen].bounds.size.height; // NSLog(@"Screen Height is %i", screenHeight); // grab correct storyboard depending on screen height UIStoryboard *storyboard = [self grabStoryboard]; // display storyboard self.window.rootViewController = [storyboard instantiateInitialViewController]; [self.window makeKeyAndVisible]; return YES; } - (UIStoryboard *)grabStoryboard { // determine screen size int screenHeight = [UIScreen mainScreen].bounds.size.height; UIStoryboard *storyboard; switch (screenHeight) { // iPhone 4s case 480: storyboard = [UIStoryboard storyboardWithName:@"Main-4s" bundle:nil]; break; // iPhone 5s case 568: storyboard = [UIStoryboard storyboardWithName:@"Main-5s" bundle:nil]; break; // iPhone 6 case 667: storyboard = [UIStoryboard storyboardWithName:@"Main-6" bundle:nil]; break; // iPhone 6 Plus case 736: storyboard = [UIStoryboard storyboardWithName:@"Main-6-Plus" bundle:nil]; break; default: // it's an iPad storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; break; } return storyboard; } 

如果你只是想把代码转换成Swift,你可以参考Apple的Swift教程。 您可以在iBook Store或networking上查看该书。 为了您的参考,我把代码转换成了Swift。

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // Override point for customization after application launch. let splitViewController = self.window!.rootViewController as! UISplitViewController let navigationController = splitViewController.viewControllers[splitViewController.viewControllers.count-1] as! UINavigationController navigationController.topViewController!.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem() splitViewController.delegate = self return true // int screenHeight = [UIScreen mainScreen].bounds.size.height; // NSLog(@"Screen Height is %i", screenHeight); // grab correct storyboard depending on screen height let storyboard = grabStoryboard() // display storyboard self.window?.rootViewController = storyboard.instantiateInitialViewController() self.window?.makeKeyAndVisible() return true } func grabStoryboard() -> UIStoryboard { // determine screen size let screenHeight = UIScreen.mainScreen().bounds.size.height var storyboard: UIStoryboard! = nil switch (screenHeight) { // iPhone 4s case 480: storyboard = UIStoryboard(name: "Main-4s", bundle: nil) // iPhone 5s case 568: storyboard = UIStoryboard(name: "Main-5s", bundle: nil) // iPhone 6 case 667: storyboard = UIStoryboard(name: "Main-6", bundle: nil) // iPhone 6 Plus case 736: storyboard = UIStoryboard(name: "Main-6-Plus", bundle: nil) default: // it's an iPad storyboard = UIStoryboard(name: "Main", bundle: nil) } return storyboard } 

根据屏幕大小加载不同的故事板:

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool { // Override point for customization after application launch. // int screenHeight = [UIScreen mainScreen].bounds.size.height; // NSLog(@"Screen Height is %i", screenHeight); // grab correct storyboard depending on screen height var storyboard: UIStoryboard = self.grabStoryboard() // display storyboard self.window.rootViewController = storyboard.instantiateInitialViewController() self.window.makeKeyAndVisible() return true } func grabStoryboard() -> UIStoryboard { // determine screen size var screenHeight: Int = UIScreen.mainScreen().bounds.size.height var storyboard: UIStoryboard switch screenHeight { // iPhone 4s case 480: storyboard = UIStoryboard.storyboardWithName("Main-4s", bundle: nil) // iPhone 5s case 568: storyboard = UIStoryboard.storyboardWithName("Main-5s", bundle: nil) // iPhone 6 case 667: storyboard = UIStoryboard.storyboardWithName("Main-6", bundle: nil) // iPhone 6 Plus case 736: storyboard = UIStoryboard.storyboardWithName("Main-6-Plus", bundle: nil) default: // it's an iPad storyboard = UIStoryboard.storyboardWithName("Main", bundle: nil) } return storyboard }