Xcode 6 尺寸类别

5
我想问一个非常令人困惑(至少对我来说)的话题- Xcode 6 中的Size Classes。我一直试图全面了解其工作原理,但对我来说仍然不清楚。
在 Xcode 6 和新的iPhone之前,一切都非常简单明了。对于启用我们使用320 x 480(或568用于更高的设备)相同分辨率的标准和@2x资源的Retina和非Retina显示屏,这让我们感到很方便。现在,我们有了具有相同比例(几乎相同)的大屏幕,但工作区域不再相同。
Size Classes应该使所有内容适合一个storyboard。但等等.. iPhone 6 使用@2x资源,这意味着图形在那种设备上会比iPhone 5/5S上的看起来更小。而iPhone 6 Plus使用@3x资源,这也不会看起来相同。似乎不可能使例如某个按钮始终相对于屏幕宽度的完整尺寸保持相同。除非我们编写,但这将使Size Classes无用。
我的理解正确还是我忽略了什么?听听你们怎么看。也许你知道一些好的教程?我没有找到任何可以解释我的疑虑的东西。
提前致谢!

你明白了。那就是我必须做的事情。根据不同的iPhone设备,通过代码手动调整按钮的大小。正如你所指出的,在iPhone 5 / 6模拟器中看起来完美的按钮,在iPhone 6 plus上显得微不足道。因此,这就是我们面临的困境。 - Sam B
感谢您的评论,Sam。看起来iPhone 6会带来很多麻烦,除非确切的尺寸和间距不是非常重要,否则在界面构建器中创建布局没有聪明的方法。这让我想起了Android :) - konrad.bajtyngier
2个回答

4
使用不同的方法组合,您可以完成大部分所说的操作:
  1. 使用不同设备类型的尺寸类来覆盖UI配置中的大规模变化(例如iPad和iPhone之间的差异)。例如,您可以使用这种方法更改侧边栏是否出现。

  2. 针对各个尺寸类别的特定自动布局规则。您可以为不同的尺寸类别添加不同的自动布局规则以微调布局。例如,您可以通过这种方式在水平按钮行和堆叠按钮列之间切换,因为现在可以为不同的尺寸类别设置不同的自动布局规则。一旦您意识到您不再需要为所有尺寸类别使用相同的自动布局规则,这种技术就非常强大。

  3. 资源目录可以自动切换不同支持的分辨率的预渲染图形等。请注意,由于许多旧设备实际上不支持iOS 8,因此您不需要再包含真正低分辨率版本,除非您需要广泛的向后兼容性(如果需要,则并非所有尺寸类别功能都可用)。我刚刚制作了一个仅支持iOS 8的新版本,因为使用旧版本的用户将只能获得应用程序的先前版本。

  4. 可调整大小的图像:您现在可以指定图像中的可调整大小区域,以控制应用于UIButtons等可能根据自动布局规则更改大小的对象时如何拉伸它们。 (这是Android已经拥有相当长时间的功能,因此在iOS上也很受欢迎。)这意味着您可以使事物在更广泛的屏幕尺寸上看起来不错,而无需使用太多单独的图像或对UI元素的大小进行精确控制。

  5. 视图控制器中的编程代码,用于微调任何无法通过其他方式实现的内容。

虽然确实无法像尺寸类别那样精细地控制哪些设备显示什么样的布局,但我发现这并不是一个大问题,因为尺寸类别让您的视图控制器能够非常流畅地适应不同的设备。自动布局和尺寸类别的组合特别强大。这实际上可能是一件好事,因为它意味着每当Apple推出不同的屏幕尺寸时,需要手动配置的新内容就会减少一些。目前转换可能有点麻烦,但从长远来看可能是值得的。您只需要稍微考虑一下如何设置事物。这有点像Android,他们一直在应对许多不同的设备屏幕尺寸和分辨率,但这也是平台的自然演变,您实际上无法精确地为每个物理设备设计,作为实际问题(但您仍然应该在模拟器中进行测试)。


嘿,非常好的观点!非常感谢您列出所有这些! - konrad.bajtyngier

0

Size classes不仅仅是为了适应更大的屏幕尺寸,而是为了完全不同的布局。例如,在iPhone上,您可能会显示一个项目并点击以获取下一个屏幕以获取更多信息,但在iPad上,您会在同一个屏幕上同时显示这两个项目。

对于小的调整,您可以使用自动布局,每个size class使用不同的布局,并且每个size class中的不同屏幕大小由自动布局处理。


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