【问题标题】:UIViewController, Auto Layout and iPhone 6UIViewController、自动布局和 iPhone 6
【发布时间】:2014-09-16 13:03:50
【问题描述】:

我们正在更新使用 Auto Layout 的应用程序以原生支持 iPhone 6 分辨率。我们添加了 iPhone 6 的启动图像,大部分视图都很好地缩放了。

然而,我们遇到了一个小麻烦:在加载新的视图控制器时,视图在UIViewControllerviewDidLoad 方法上具有iPhone 5 的分辨率。当您点击viewWillAppear 时,视图只会获得 iPhone 6 的分辨率。

这是为什么?有什么我们可以配置或修改以使视图在viewDidLoad 上具有最终分辨率吗?

【问题讨论】:

    标签: ios objective-c uiviewcontroller autolayout iphone-6


    【解决方案1】:

    我认为从您的视图中获取几何数据的正确位置是在方法中:

    - (void)viewDidLayoutSubviews;
    

    当自动布局完成视图布局时调用。请注意此方法可能会被多次调用,即在设备旋转之后。

    编辑

    在界面生成器中,有一个选项可以设置模拟指标的大小。我不确定这是否仅与界面构建器显示的内容有关,或者与加载时的视图框架有关。也许您可以更改它并尝试一下。

    【讨论】:

    • 这个答案看起来很明智。谢谢!我仍然想知道为什么所有视图都认为它们在viewDidLoad 期间的宽度是 320 点...这是 UIKit 框架本身的一个神器还是因为我们的项目是在 iPhone 6 发布之前开始的?无论如何,如果没有更好的答案,我会接受。
    • @RicardoSánchez-Sáez 你在使用 xib/nib 的吗?
    • 是的,其中不少。
    • 在 .xibs 上将大小显式设置为 iPhone 6 使其在 iPhone 5 和 iPhone 6 上返回viewDidLoad 上的 iPhone 6。将其设置为 inferred让它的行为就像我在答案中所说的那样(它在 iPhone 6 和 iPhone 4S 上都返回 iPhone 5 的分辨率。如果 inferred 选项已经在 @ 上返回正确的设备分辨率,那就太好了987654325@.
    猜你喜欢
    • 2015-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-14
    • 2015-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多