iPad 12中iPad导航栏和工具栏的高度变化

我刚刚在Apple开发者论坛中找到了一个iPad导航栏高度现在为50 [在iOS 12上]。 什么!? 在“平台状态​​联盟”或“ CocoaTouch的新增功能”中未提及这一点。 该职位成立11天(我于2018年6月16日写道)。 我在Twitter上关注了很多开发人员,阅读了许多博客,并收听了许多播客。 我怎么没听说过这一变化? iPad导航栏高度的增加真的可以吗? 我的适应性应用程序是进行调查的理想工具。

使用Xcode 9或更早版本(即以iOS 11或更早版本为目标)构建的应用程序会看到非常熟悉的行为:导航栏和工具栏的高度为44点,状态栏为20点的高度,有效导航栏高度为64点。状态栏未隐藏:

iOS 11的大标题为导航栏的高度增加了52个点,总共有96个不带状态栏的点和116个带状态栏的点:

在运行iOS 12 beta 1的真实设备或iPad模拟器上运行相同的Xcode 9版本的Adaptivity,将显示状态栏内容的新布局。 现在的时间在左边,在屏幕中间留有空间,可以预期很宽的凹口! [编辑:错误!]导航栏和工具栏的高度不变。 这是苹果公司向后兼容的结果。

Xcode 10 beta 1(即针对iOS 12 beta 1)的构建确实揭示了新的iPad导航栏和工具栏的高度比50点高6点。 包括状态栏在内,导航栏现在高70点。 对于显示导航栏和工具栏的应用程序,可为您的内容减少12个高度点:😲

大型标题继续为导航栏的高度增加了52个点,总共有102个不带状态栏的点和122个带状态栏的点:

当使用表单,页面表单或弹出式呈现样式时,较大的导航和工具栏也可以在模态呈现的视图控制器中找到:

在iOS 12中,iPad标签栏的高度也从49点更改为50点。 这样可以消除iPad上工具栏和选项卡栏之间的高度差。 在iPhone选项卡上,竖条的纵向高度保持49点,横向保持32点高度。 iPhone X在工具栏和选项卡栏上增加了Home Bar的高度,其尺寸与iOS 11相同:纵向高83点,横向高53点。

正如我们在iOS历史上多次看到的那样,当重要的行为发生变化时,更大的iPad导航和工具栏高度要求开发人员通过使用Xcode 10隐式选择加入。旧应用在iOS 12上不会突然出现不同的现象(好吧,至少不是因为这个原因!!)即使在iOS 12上运行,开发人员也可以在可预见的将来发布使用Xcode 9构建的应用程序的更新,并保持以前的高度。

运行iOS 12的9.7“,10.5”和12.9“ iPad模拟器都显示相同的高出6点的导航栏和工具栏。我在iPhone上没有看到任何尺寸变化。

这只是iOS 12 beta 1,因此情况可能仍会改变。 我怀疑这些更改正在为2018年9月发布的带Face ID的新iPad做准备。 状态栏布局的更改是一个相当大的线索,即带有Face ID的iPad上将带有一个刻痕[编辑:错误!]。 与iPhone X一样,这可能会增加状态栏的高度,并因此增加导航栏的有效高度。 如果理论上新的iPad还包括Home Bar,则工具栏和选项卡栏的高度可能会进一步增加。 正如去年iPhone X所发生的那样,我希望苹果在具有Face ID的iPad上运行时,可以将不使用Xcode 10构建的信箱/支柱盒iPad应用程序使用。

这些变化表明,设计自适应应用程序变得越来越重要,这些应用程序不对内容大小进行硬编码或对导航栏,工具栏或标签栏的高度进行假设。 自动布局,布局边距/指南以及自iOS 11起的“安全区域”是您的朋友!

我是否真的在iOS 12模拟器上运行了我的应用程序的Xcode 9版本? 是:

  • 在Xcode 9上构建应用程序(显然!)
  • 找到它产生的.app文件。 最简单的方法是在Xcode项目导航器中展开Products文件夹,右键单击并选择Show in Finder 。 将.app文件复制到安全的地方(例如,复制到桌面)
  • 退出Xcode 9,如果正在运行,则退出Xcode 9模拟器
  • 启动Xcode 10并运行任何应用程序以打开要测试的iOS 12模拟器。 您可能可以手动启动模拟器,但是运行任何应用程序并让Xcode为您完成操作最快
  • .app文件从桌面拖放到模拟器上进行安装
  • 您现在只需点击主屏幕上的图标,即可在iOS 12模拟器上运行Xcode 9内置的应用程序!

您将无法从Xcode启动和调试应用,但是您将能够通过这种方式在iOS 12模拟器上手动运行使用Xcode 9构建的应用。 将Xcode 10调试器附加到该进程似乎可行,但是我无法使该应用程序在断点处停止。

在Xcode 9和10之间来回切换的过程有点麻烦,但是如果您没有运行iOS 12的真实设备,这是尝试检查是否使用Xcode 9构建的应用程序的一种方法。不会立即在iOS 12上崩溃。这可能会花费一些时间来使用Xcode 10构建您的应用程序,选择采用新的iOS 12行为并修复所有问题。

如果确实有运行iOS 12的真实设备,则可以通过在Xcode 9安装中创建指向Xcode 10的iOS 12设备支持文件的符号链接来使Xcode 9识别它们。 有关更多信息,请参见Peter Steinberger的要旨,并相应地更新路径。 谢谢彼得。 在最近的iOS版本中,这个技巧对我非常非常有用helpful

本文中的屏幕截图来自运行我的Adaptivity iOS应用的iOS模拟器。 适应性是开发人员和设计人员用来可视化现代iOS应用在不同设备和iPad多任务尺寸上运行时使用的不同屏幕尺寸,布局边距,可读内容指南,条形高度和动态类型尺寸的工具。 有关所有功能的更多屏幕截图和信息,请访问我的网站。

如果您是iOS开发人员,那么您可能会对我长期运行的系列文章感兴趣,这些系列文章展示了应用如何根据更新的设备尺寸而适应,具体取决于它们所使用的Xcode版本:

  • iPad Apps如何适应新的11英寸和12.9英寸iPad Pro
  • 应用如何适应Series 4 Apple Watch屏幕尺寸
  • iOS应用如何适应iPhone XS Max和iPhone XR屏幕尺寸
  • iOS应用如何适应iPhone X屏幕尺寸

这些文章中的屏幕截图也来自运行我的Adaptivity iOS应用的iOS模拟器。 该应用程序只有一个iPhone版本,可以显示iPad上的仅iPhone应用程序的显示方式(在iOS 12中已更改)。

我还写了有关iOS上的外部显示支持以及使用多个版本的Xcode的文章。您可能没有意识到iOS 13中的View Controller Presentation更改。

如果您发现这些文章中的任何一条对您有帮助,请在iOS App Store中查看我的应用程序,以查看是否有您要下载的内容(尤其是付费😀)。 如果您处理大量Xcode项目,则可能会喜欢Mac菜单栏实用程序XcLauncher。