0

在 iPad 上,我的视图控制器(在导航控制器内,作为拆分视图控制器的详细视图)的 topLayoutGuide 长度为 64,显示导航栏,20 隐藏导航栏。这是有道理的。

在横向的 iPhone 上,状态栏会自动隐藏,导航栏会变短。topLayoutGuide 长度读取为 32 显示导航栏,0 显示它隐藏。这也是有道理的。

但是,在纵向的 iPhone 上,它的 topLayoutGuide 长度为 44 并显示导航栏,而 0 则隐藏。状态栏自动显示;为什么 topLayoutGuide 不承认额外的 20px 空间?

我宁愿不编写令人讨厌的条件代码,这样 iPhone 才能正确读取它的 topLayoutGuide。是否有我可以设置的视图或导航控制器的属性将返回 topLayoutGuide 的直观值?它是否与在拆分视图控制器中有关?

4

1 回答 1

0

它不应该这样。在 ipad 和 iphone 中,toplayout 指南应始终保持不变。如果您在计数方面犯了任何错误,请检查两次。

您可以做一个实验:在 VC 中拖动一个视图(没有导航栏)并将其y=20定位,然后单击 pin 并通过单击下拉箭头检查它的顶部,默认情况下它将显示与 toplayout 指南的距离。

看它的截图:

在此处输入图像描述

现在,如果您固定此约束,然后在其中打开iphone or ipad它,它将保持在状态栏的正上方,这意味着距离视图边缘低 20 像素。

0 distance (constant = 0)您已经使用顶部布局指南设置了约束,因此它保持不变0 distance with layout guide,因此它看起来比边缘低 20 像素。

现在,如果 toplayout guide 变为 0(正如您在问题中所说),那么这个视图应该接触到边缘,因为它与顶部布局指南管理 0 距离。并且您的布局指南为零,因此视图应该触摸边缘,或者它的 y 应该为 0,但它没有发生,所以我可以说您进行了一些错误的计算

希望这会有所帮助:)

于 2016-05-21T06:51:07.623 回答