在iPad上,我的视图控制器(在导航控制器内部,作为拆分视图控制器的详细视图)的topLayoutGuide长度为64,显示的是导航栏,20为隐藏导航栏。这是有道理的。
在风景中的iPhone上,状态栏会自动隐藏,导航栏会变短。 topLayoutGuide长度显示为32,显示导航栏,0显示为隐藏。这也是有道理的。
然而,在iPhone上的肖像画中,它的topLayoutGuide长度为44,导航栏显示为0,隐藏时为0。状态栏会自动显示;为什么topLayoutGuide不承认额外的20px空间?
我宁愿不写出令人讨厌的条件代码,因此iPhone会正确读取其topLayoutGuide。我可以设置视图或导航控制器的属性,它将返回topLayoutGuide的直观值吗?它是否与分裂视图控制器内部有关?
答案 0 :(得分:0)
不应该这样。在ipad和iphone中,toplayout指南应始终保持相同。如果你犯了任何错误,请检查两次。
你可以做一个实验:在VC中拖动一个视图(没有导航栏)并在y=20
定位它然后点击pin并通过点击下拉箭头检查它的顶部它将显示距离toplayout guide by默认值。
查看它的截图:
现在,如果您固定此约束然后在iphone or ipad
中打开,它将保持精确,状态栏上方距离视图边缘下方20像素。
您已使用0 distance (constant = 0)
设置了带有顶部布局指南的约束,因此它保持0 distance with layout guide
,因此它看起来距离边缘20个像素。
现在,如果将指南变为0(正如您所说的那样),则此视图应该触及边缘,因为它与顶部布局指南管理0距离。并且您的布局指南为零,因此视图应该触及边缘,或者它应该为0,但它不会发生,因此我可以说您正在进行一些错误的计算
希望这会有所帮助:)