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

Posted

技术标签:

【中文标题】针对不同屏幕尺寸的不同视图控制器【英文标题】:Different view controllers for different screen sizes 【发布时间】:2016-01-12 22:54:03 【问题描述】:

在我的故事板上,我创建了 2 个视图控制器;一个适用于 iPhone 5 和 iPhone 6。如何访问不同手机尺寸的不同视图控制器。在网上我发现了一些可以让我切换不同故事板但我只想改变一个屏幕的东西。有什么方法我可以做到这一点,或者用一个不同的屏幕制作一个重复的故事板?

【问题讨论】:

自动布局教程-google吧 您应该使用自动布局和大小类。为不同的设备多次创建相同的视图确实是个坏主意……关于这些主题的教程和博客文章很多。 【参考方案1】:

我发现尺寸类非常容易出错,以至于我在某些时候很想使用这种方法(最终使我的所有约束完全独立于屏幕尺寸和方向,但这是另一个有趣但无关紧要的故事)。

您可以做到这一点的一种方法是使用带有命名约定的自定义 segue。假设您已经有一个链接到 iPhone5 的视图控制器的故事板转场,并且您希望将其重定向到您的 iPhone6 变体。 给那个 segue 取一个以“.iPhone5”结尾的名字。然后创建一个自定义 segue(从源 viewController 的红色方块拖到目标)并为其命名,但带有“.iPhone6”扩展名。

您可以在调用控制器中实现覆盖 shouldPerformSegueWithIdentifier,如果您使用的是 iPhone6,则以 false 响应并以编程方式触发(performSegueWithIdentifier)iPhone6 segue,使用您收到的标识符作为参数,将“.iPhone5”替换为“.iPhone6” ”。

您可以将该代码集中在一个函数或 UIViewController 的扩展中,以便更容易在您的各种视图控制器上实现。

【讨论】:

以上是关于针对不同屏幕尺寸的不同视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

使用比例约束会导致不同屏幕尺寸出现故障

如何使用 Xcode 8 上的自动布局调整对象的大小以适应不同的屏幕尺寸?

自动布局视图在不同的屏幕尺寸上总是相同的尺寸

处理屏幕尺寸的正确方法

针对不同屏幕尺寸在特定像素位置绘制小部件

在 Android 上针对不同的屏幕尺寸和密度重用可绘制图像