如何为所有 iPhone 设备支持一个 xib,直到 iPhone 6 Plus?

Posted

技术标签:

【中文标题】如何为所有 iPhone 设备支持一个 xib,直到 iPhone 6 Plus?【英文标题】:How to support one xib for all iPhone devices upto iPhone 6 Plus? 【发布时间】:2014-09-19 05:32:23 【问题描述】:

我启动了一个新的 ios 应用程序。该应用程序要求是应用程序应支持从 iPhone 4 到 iPhone 6 Plus。我非常熟悉使用 Xib 文件。到目前为止,我将我的应用程序与 iPhone 5 和 iPhone 5 以下进行了区分。为此,我使用了 2 个 Xib 文件,其中一个用于 iPhone 5,另一个是 iPhone 5 以下,根据我添加的设备高度。但是现在苹果已经发布了 iPhone 6 和 iPhone 6 Plus 以及 iOS 8 以及 XCode 6。对于这 4 种类型的设备,

1) iPhone 4 2) iPhone 5 3) iPhone 6 和 4) iPhone 6 Plus 我是否需要添加 4 个 Xib 或任何其他解决方案

要学习 Storyboard,现在我没有太多时间,因为我的应用程序已经从客户那里确认了发布日期。但我将来肯定会了解sotryboard。

我尝试过使用 Autolayout 概念,但它对我不起作用。而且我对自动布局概念也没有充分的认识。昨天我用 XCode 6 开始了我的新项目,所以我使用 iPhone 6 视图并尝试使用自动调整大小和自动布局,但对我不起作用并且视图重叠。我知道为不同的设备创建不同的 xib 并不是一个好习惯。使用每个 xib 创建每个设备将花费大量时间。从昨天开始,我真的很担心如何处理不同的设备。请有人帮我解决这个问题。真的非常感谢你。如果我的内容有任何错误,请原谅我。

【问题讨论】:

不使用自动布局,您可以创建兼容所有设备的 xib @Ashish Kakkad 感谢您的快速回复,但没有使用自动布局,一个 xib 怎么能支持所有 iPhone 设备视图?有什么想法吗? 【参考方案1】:

您的问题应该得到比 *** 提供的更长的答案,但我可以给您一些建议。

    为每个 xib 启用 Size Classes 和 Autolayout。 将每个 xib 根视图的大小类设置为宽度 Any 和高度 Any,我认为这是默认设置。 以一种在这种理论上的 Any x Any 设备上看起来不错的方式设计您的界面。 我强烈建议在任何视图控制器的视图层次结构的顶层使用UIScrollView。 使用约束来锚定控件。我发现从左上角的控件开始最简单,将其锚定到包含视图的顶部和左侧,然后向下并穿过,直到所有控件都被限制在所有 4 个侧面或一个垂直上和一种水平尺寸,以及明确的高度和宽度。慷慨地处理约束中的大于和小于关系。 要自定义每个设备布局,请将尺寸等级切换为所需的组合。 请注意,您添加、更改或删除的任何约束,以及您添加或删除的任何控件,都将仅针对当前班级规模进行更改。为您的每个不同规模班级执行此操作再去支持。请参阅Apple's reference,了解每个设备使用的尺寸等级。 使用 Resizable Device 模拟器测试您的布局。

这是一项艰巨的工作,但肯定比必须为每个设备大小维护不同的 xib 要好。

【讨论】:

感谢您的快速回复,我对您对解决方案的冗长描述感到有些困惑,您能告诉我在我的应用程序中究竟需要做什么吗?如果你不介意? 我几乎就是这样做的,不包括屏幕截图、视频或示例代码。 @Anilkumar 你找到解决方案了吗? @HariBabu,解决方案是自动布局 @Anilkumar,我启用了自动布局,并禁用了 sizeclasses。我的 xib 大小是 320x568。我在 6 台和 6 台以上的设备中遇到对齐问题。

以上是关于如何为所有 iPhone 设备支持一个 xib,直到 iPhone 6 Plus?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 iphone 3.5 和 iphone 4 英寸屏幕(ios 6 和 ios7)设计 Single xib?

如何为 iPhone 5 显示器加载 xib

如何为不同的xib添加一个共同的视图?

如何为所有 iphone 设备在同一行中设置多个 UIlabel

如何在不为 iphone 和 ipad 创建单独的 xib 的情况下为所有 ipad 和 iphone 创建通用 xib?不是故事板

如何为特定设备而不是尺寸等级设计故事板