Ios iPhone 6/6上的自适应用户界面&x2B;与旧款相比

Ios iPhone 6/6上的自适应用户界面&x2B;与旧款相比,ios,iphone,autolayout,size-classes,Ios,Iphone,Autolayout,Size Classes,在我的应用程序中,我大部分都有基于表视图的视图控制器,当在我的应用程序支持的所有iPhone型号上运行应用程序时,这些控制器工作正常,看起来也很好(应用程序是iOS 8+和iPhone 4S) 我也有一些音频内容的播放视图,包括相册艺术、已用/总时间标签、进度条等 对于这个视图,我没有使用任何约束,因此,很明显,它不能正确地显示在更大的手机上 我关注了去年WWDC的视频,他们介绍了自适应UI和新的大小类,我注意到他们给出的所有示例都提到在iPhone和iPad上使用相同的UI,我很清楚如何使用大

在我的应用程序中,我大部分都有基于表视图的视图控制器,当在我的应用程序支持的所有iPhone型号上运行应用程序时,这些控制器工作正常,看起来也很好(应用程序是iOS 8+和iPhone 4S)

我也有一些音频内容的播放视图,包括相册艺术、已用/总时间标签、进度条等

对于这个视图,我没有使用任何约束,因此,很明显,它不能正确地显示在更大的手机上

我关注了去年WWDC的视频,他们介绍了自适应UI和新的大小类,我注意到他们给出的所有示例都提到在iPhone和iPad上使用相同的UI,我很清楚如何使用大小类实现这一点。但由于iphone6和6plus只是在稍后发布,我找不到任何相关文档,说明如何使用新的大小类概念使我的UI在更大的iPhone上看起来更合适。特别是,我似乎找不到一种方法来区分只使用大小类别的iPhone机型

此时此刻,我可以看到两种解决方案:

  • 为每种设备类型制作4个xib文件(我仍在使用xib,没有故事板)。在运行时检测我正在运行的设备,并使用正确的xib

  • 只制作一个xib文件。使用约束并为代码中的每个约束创建出口。在运行时检测我正在运行的设备,并相应地更改约束值

在第二种情况下,我只有一个xib,但我仍然需要在运行时检测设备,并执行一些特定于设备的工作

显然我不喜欢这两个,因为我觉得它们都不干净。理想情况下,我希望有一个xib,并且不需要根据运行的设备进行任何更改

还有其他想法吗?您是如何在应用程序中解决此问题的

提前谢谢

在我的应用程序中,我取消选中“使用大小类”、“使用自动布局” 对于接口文件中的每个对象,我设置了自动调整大小的掩码

tableview的一个示例

例如:如果您不希望tableview的高度随父视图的高度而改变,请单击垂直箭头将其删除。

在我的应用程序中,我取消选中“使用大小类”、“使用自动布局” 对于接口文件中的每个对象,我设置了自动调整大小的掩码

tableview的一个示例


例如:如果您不希望tableview的高度随父视图的高度而变化,请单击垂直箭头将其删除。

谢谢您的建议,但我确实希望使用自动布局和大小类的解决方案,主要是因为这是“苹果方式”还有一个原因是,这似乎是在iPad上支持新的多任务分割视图的方式。谢谢你的建议,但我真的想要一个使用自动布局和大小类的解决方案,主要是因为这是“苹果方式”还有一个原因是,这似乎是在iPad上支持新的多任务分割视图的方式。谢谢你的建议,但我真的想要一个使用自动布局和大小类的解决方案,主要是因为这是“苹果方式”此外,这似乎是在iPad上支持新的多任务分割视图的一种方式。据我所知,在所有iPhone(包括6/6+)上,在纵向模式下,您的布局应该是相同的。6+的纵向模式(目前)有自己的大小级别(紧凑的高度、规则的宽度)。这够了吗?否则,您能否创建一个最小的示例来更好地理解您的问题?是的,它可能对6+有帮助,但对其他人没有帮助。目前我使用2个XIB,一个用于4S,另一个用于5/5S。我希望避免创建其他2个(用于6和6+),并使用自动布局(如果可能)完成所有操作。据我所知,所有iPhone(包括6/6+)在纵向模式下的布局都应相同。6+的纵向模式(目前)有自己的大小级别(紧凑的高度、规则的宽度)。这够了吗?否则,您能否创建一个最小的示例来更好地理解您的问题?是的,它可能对6+有帮助,但对其他人没有帮助。目前我使用2个XIB,一个用于4S,另一个用于5/5S。我希望避免创建其他2个(用于6和6+),并使用自动布局(如果可能)完成所有操作。据我所知,所有iPhone(包括6/6+)在纵向模式下的布局都应相同。6+的纵向模式(目前)有自己的大小级别(紧凑的高度、规则的宽度)。这够了吗?否则,您能否创建一个最小的示例来更好地理解您的问题?是的,它可能对6+有帮助,但对其他人没有帮助。目前我使用2个XIB,一个用于4S,另一个用于5/5S。我希望避免创建其他2个(用于6和6+),并使用autolayout完成所有操作(如果可能)。