如何支持一个xib用于所有iPhone设备,包括iPhone 6 Plus?

6
我正在开发一款新的iOS应用程序,该应用要求支持从iPhone 4到iPhone 6 Plus。我非常熟悉使用Xib文件。到目前为止,我已经将我的应用区分为iPhone 5及以下和iPhone 5以上。为此,我使用了两个Xib文件,一个是iPhone 5的,另一个是iPhone 5以下的,根据设备高度进行添加。但现在,苹果发布了带有iOS 8的iPhone 6和iPhone 6 Plus以及XCode 6。对于这4种类型的设备,我需要添加4个Xib文件还是其他解决方案?
现在我没有时间学习故事板,因为我的应用已经有了客户确认的发布日期。但是我将来肯定会学习关于故事板的知识。
我尝试过自动布局的概念,但它对我没有用。而且我也不完全了解自动布局的概念。昨天我用XCode 6开始了我的新项目,所以我选择了iPhone 6视图,并尝试使用自动调整大小和自动布局,但对我来说没有用,视图重叠了。我知道为不同的设备创建不同的Xib文件不是一个好的实践。为每个设备创建一个Xib文件需要花费大量的时间。我真的很困扰如何处理不同的设备,从昨天开始就一直在烦恼。请有人帮助我解决这个问题。非常感谢你的帮助。如果我的内容有任何错误,请原谅我。

没有自动布局,你可以创建与所有设备兼容的xib。 - Ashish Kakkad
1
@Ashish Kakkad,感谢您的迅速回复,但如果不使用自动布局,一个xib如何支持所有iPhone设备的视图呢?有什么想法吗? - Anilkumar iOS - ReactNative
1个回答

15

您的问题需要比StackOverflow提供的更长的答案,但我可以给您一些指针。

  1. 对于每个xib,启用Size Classes和Autolayout。
  2. 将每个xib的根视图大小类设置为宽度任何和高度任何,我相信这些是默认值。
  3. 设计您的界面,使其在这种理论上的任意设备上看起来不错。
  4. 强烈建议在任何视图控制器的视图层次结构的顶级使用UIScrollView
  5. 使用约束来锚定控件。我发现从左上角的控件开始最容易,将其锚定到包含视图的顶部和左侧,然后逐步向下和向右移动,直到所有控件在所有4个边缘上受到限制,或者在一个垂直和一个水平尺寸上受到限制,以及明确的高度和宽度。在约束中慷慨地使用大于和小于的关系。
  6. 要为每个设备布局进行自定义,请将大小类切换到所需的组合。请注意,您添加、更改或删除的任何约束,以及添加或删除的任何控件,仅会针对当前的类大小进行更改。为支持的每个不同大小类执行此操作。有关每个设备使用哪些大小类,请参见Apple's reference
  7. 使用可调整大小的设备模拟器测试您的布局。

这是一项艰苦的工作,但肯定比为每个设备尺寸维护不同的xib要好。


谢谢您的快速回复,我对您提供的解决方案的长描述有点困惑,您能告诉我在我的应用程序中需要做什么吗?如果您不介意的话。 - Anilkumar iOS - ReactNative
1
我基本上就是这样做的,没有截图、视频或示例代码。 - NRitH
@Anilkumar,你找到解决方案了吗? - Hari Babu
2
@Anilkumar,我启用了自动布局,并禁用了尺寸类。我的xib大小为320x568。在6和6+设备上出现了对齐问题。 - Hari Babu
从XCode 6开始,您必须为所有视图使用默认的xib,不要使用自定义视图作为iPhone 5视图(320x568)等,iOS 8 SDK将不支持并显示不支持警告。 - Anilkumar iOS - ReactNative
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接