【问题标题】:How to set two different screen options in xcode如何在 xcode 中设置两个不同的屏幕选项
【发布时间】:2013-12-01 23:37:09
【问题描述】:

好的,所以使用 xcode,您可以为 iPhone 5 和 iPhone 4 设置不同的屏幕尺寸,当我尝试将内容放在 Storyboard 文件中时,它们总是搞砸了,就像我为 iPhone 5 以一种方式放置所有内容,然后它在 iPhone 4 上被切断了。有没有办法拥有两个不同版本的故事板,所以我可以为每个屏幕尺寸不同地放置对象?

【问题讨论】:

标签: ios xcode storyboard screen-size


【解决方案1】:

您可以在代码中手动执行此操作,方法是根据屏幕尺寸选择故事板。但是,我认为没有办法自动执行此操作,因为应用程序的 info.plist 只有Main storyboard file base nameMain storyboard file base name (iPad)Main storyboard file base name (iPhone)

要手动执行此操作,您需要在应用委托中加载您的第一个视图控制器,如下所示:

//AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle mainBundle]];
    if ([UIScreen mainScreen].bounds.size.height == 568.0) {
        //device is an iPhone 5 or 5S
        storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard568Height" bundle:[NSBundle mainBundle]];
    }
    self.window.rootViewController = [storyboard instantiateInitialViewController];
    [self.window makeKeyAndVisible];
}

一旦您以这种方式加载了您的第一个视图控制器,您应该能够再次使用该故事板中的转场来避免这种逻辑。如果您需要手动加载视图控制器,您只需访问当前 UIViewControllerself.storyboard 属性即可确保您访问的是正确的故事板,而无需检查屏幕高度。

【讨论】:

  • 抱歉,我该怎么做呢?或者也许我在哪里将代码更改为这个?
  • 实际上,最好的方法可能是在应用程序委托中进行设置。我已经相应地更新了我的答案。
  • 它不适合我,我创建了第二个故事板,所以它们都被称为 Main.storyboardMain2.storyboard 但它不起作用所以我的代码看起来像这样 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]]; if ([UIScreen mainScreen].bounds.size.height == 568.0) { //device is an iPhone 5 or 5S storyboard = [UIStoryboard storyboardWithName:@"Main2" bundle:[NSBundle mainBundle]]; } self.window.rootViewController = [storyboard instantiateInitialViewController]; [self.window makeKeyAndVisible]; }
  • 在我的AppDelegate.m 文件中。但是当我通过模拟器或我的 iPhone 4 运行该代码时,它总是会自动加载 main.storyboard 文件。
  • 检查if 语句是否正在执行,然后检查屏幕边界以查看它们是什么。
猜你喜欢
  • 2017-01-30
  • 2013-08-17
  • 2023-01-26
  • 1970-01-01
  • 2015-09-10
  • 1970-01-01
  • 1970-01-01
  • 2018-07-03
  • 1970-01-01
相关资源
最近更新 更多