我想问一个关于高度混淆(至少对我而言)主题的问题 - Xcode 6中的大小类。我一直在努力全面了解这一切是如何工作的,但目前还不清楚我
在Xcode 6和新款iPhone之前,一切都非常简单。 To,Non-Retina和Retina,显示器使我们能够始终使用相同的分辨率320x480(或更高的设备568)。标准和@ 2x资产非常有意义。然而,现在我们有相同比例的大屁股屏幕(几乎相同),但工作区域不再相同。
大小类应该可以使所有内容适合一个故事板。但等等.. iPhone 6使用@ 2x资产,据我所知,这意味着该设备上的图形看起来比iPhone 5 / 5S上的图形要小。 iPhone 6 Plus使用的是@ 3x资产,这看起来并不一样。例如,似乎不可能使某个按钮总是与屏幕的全宽度相同。除非我们编码当然,但这会使大小类无用。
我是否理解正确的事情或者我错过了什么?听听大家的看法会很棒。也许你知道一些很好的教程?我还没有找到任何可以解释我怀疑的东西。
提前致谢!
答案 0 :(得分:4)
您可以使用不同方法的组合来完成您在此处讨论的大部分内容:
针对不同类型设备的大小类,以涵盖UI配置中的大多数大规模更改(例如,iPad和iPhone之间的差异)。例如,您可以使用它来更改是否显示侧栏。
特定于各个尺寸类的Autolayout规则。您可以为不同的大小类添加不同的自动布局规则以调整布局(例如,您可以通过这种方式在按钮的水平行和按钮的堆叠列之间切换,因为您现在可以针对不同的大小类使用不同的Autolayout规则)。一旦您意识到不再需要对所有大小的类使用相同的自动布局规则,这种技术就非常强大。
资产目录,自动为不同支持的分辨率等切换预渲染图形。另请注意,由于许多旧设备实际上并不支持iOS 8,因此除非您需要广泛的向后兼容性,否则您不需要再包含真正的低分辨率版本(如果您这样做,并非所有尺寸都是如此)无论如何都有班级功能)。我刚刚制作了一个仅支持iOS 8的应用程序的新版本,因为旧版本的用户只会获得以前版本的应用程序。
可调整大小的图像:您现在可以在图像中指定可调整大小的区域,以便控制它们在应用于UIButtons等物体时的拉伸方式,这些可能会根据Autolayout规则改变大小。 (这是Android已经使用了很长一段时间的功能,因此它在iOS上受到欢迎。)这意味着您可以在更多种类的屏幕尺寸上使外观看起来不错,而无需拥有尽可能多的单独图像或更精确的图像控制UI元素的大小。
视图控制器中的编程代码可以调整您无法通过任何其他方式实现的任何内容。
虽然你没有对哪些设备显示大小等级的确切布局进行精细控制,但我发现这并不像你那么大问题。可能会想,因为大小类让您的视图控制器可以非常无缝地适应不同的设备。自动布局和大小类的组合特别强大。它实际上可能是一件好事,因为每当Apple推出不同的屏幕尺寸时,这意味着更少的新手动配置。现在转换起来有点痛苦,但从长远来看可能是值得的。你只需要考虑一下你的设置方式有点不同。它有点像Android,他们长期以来不得不面对许多不同的设备屏幕尺寸和分辨率,但它也是平台的自然演变,你可以非常精确设计每个物理设备作为一个实际问题(你仍然应该在模拟器中对它们进行测试)。
答案 1 :(得分:0)
尺寸类不适合更大的屏幕尺寸,它们适用于完全不同的布局。就像在iPhone上一样,您可以显示一个项目并点击以进入下一个屏幕以获取更多信息,但在iPad上您可以在同一屏幕上显示。
对于小调整,您使用自动布局,每个尺寸类具有不同的布局,并且每个尺寸类中的不同屏幕尺寸由自动布局处理。