不同的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 }
- 基于什么,iOS应用程序切片的作品? 是否有任何代码或其他东西需要它?
- 在纵向模式下维护一个视图控制器,在iOS模式下维护其他视图
- 如何在iOS 9中通过幻灯片和拆分视图使用AVCaptureSession?
- AVAssetWriterInput当前不支持AVVideoScalingModeFit – IOS错误
- 在Xcode 7中的两个UIImage视图之间引脚水平间距
- Xcode 6.1’内置于Xcode调试器中的Swift REPL可以检查和操作正在运行的应用程序’无法正常工作
- UIWebView不会加载URL
- iOS核心animation:不正确的旋转锚点
- 如何从fbprofilepictureview检索图像并将此图像存储到数据库中