适用于不同 iPhone 尺寸的多个故事板

Posted

技术标签:

【中文标题】适用于不同 iPhone 尺寸的多个故事板【英文标题】:Multiple storyboards for different iPhone sizes 【发布时间】:2016-08-25 20:05:56 【问题描述】:

我在didFinishLaunching 的appDel.m 中设置了以下代码。 我目前有 2 个故事板 iPhone 5 和 iPhone 6。问题是我使用的代码没有选择 iPhone 5 故事板,它始终默认为 iPhone 6。

UIStoryboard *storyBd;
CGSize result = [[UIScreen mainScreen]bounds].size;
CGFloat scale = [UIScreen mainScreen].scale;
result = CGSizeMake(result.width, result.height * scale);

NSLog(@"The Result height is %f",result.height);

if (result.height == 1136) 
    storyBd = [UIStoryboard storyboardWithName:@"i5Story" bundle:nil];
    UIViewController *initView = [storyBd instantiateInitialViewController];
    [self.window setRootViewController:initView];
else if (result.height == 1334)
     storyBd = [UIStoryboard storyboardWithName:@"i6Story" bundle:nil];
    UIViewController *initView = [storyBd instantiateInitialViewController];
    [self.window setRootViewController:initView];

【问题讨论】:

result.height的日志输出是什么? 【参考方案1】:

那是因为高度不是1136,而是568。您无需寻找视网膜高度 (1136),只需寻找正常的“1x”像素大小。

另外你真的不应该这样做,而是使用自动布局并制作一个故事板。

【讨论】:

但是 OP 将屏幕高度乘以屏幕比例,因此结果将以像素为单位,而不是点。 哦!好的,是的,但是我的 vc 太复杂了,无法自动布局,为了让它正常工作,我苦苦挣扎了好几个星期。 而且这种情况永远不会依赖于市场上具有新尺寸的新设备,因此您确实应该考虑使用通用理念,例如将单一故事板约定作为标记。 是的,我想是的,会再试一次。我同意,只是很难做到正确。

以上是关于适用于不同 iPhone 尺寸的多个故事板的主要内容,如果未能解决你的问题,请参考以下文章

针对不同屏幕尺寸的不同视图控制器

适用于 iPhone 和 iPad 的 Xcode 故事板和 xib

没有自动布局的不同屏幕尺寸的相同故事板

故事板转场覆盖 iPhone 4 和 5 上的垂直过渡

一个适用于 iPhone 3.5 和 4 英寸的故事板

适用于 iOS 和 iPad 的故事板