如何在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;
}
答案 0 :(得分:3)
如果您只想将代码转换为Swift,可以参考Apple的swift教程。您可以在iBook商店或网络上查看图书。为了您的参考,我将代码转换为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
}
答案 1 :(得分:1)
根据屏幕尺寸加载不同的故事板:
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
}