2014-02-13 50 views
11

我处理在Interface Builder中设置的自动布局。当我在运行时隐藏状态栏时,我不想偏移固定到顶部布局指南的视图。iOS7隐藏状态栏但不调整顶部布局指南

我发现当隐藏状态栏时,myViewController.topLayoutGuide.length从20变为0。如何预防它?或(作为解决方法)如何设置各种窗口大小的全屏视图,而无需引脚到顶部布局指南?

一些代码来描述我的情况:

Log(@"frame: %@, top: %.0f", NSStringFromCGRect(myViewController.myView.frame), self.topLayoutGuide.length); 
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone]; 
Log(@"frame: %@, top: %.0f", NSStringFromCGRect(myViewController.myView.frame), self.topLayoutGuide.length); 

输出:

frame: {{40, 24}, {240, 40}}, top: 20 
frame: {{40, 4}, {240, 40}}, top: 0 
+0

不完全清楚你想达到的目标。您是否试图让视图在固定位置显示元素,而不管状态栏是否显示?或者这是iOS6/7切换问题?如果在布局组件vs运行时结果时导致问题,也可以将状态栏隐藏在IB中。 – Ben

+0

我在运行时隐藏状态栏,并在那个时刻UI变化。原因在于'topLayoutGuide'。状态栏隐藏时,我想保持UI位置。 – brigadir

+0

您是否正在显示视图并且 - 然后 - 摆脱状态栏,或者您是否告诉状态栏在显示视图之前不显示? – Ben

回答

19

的topLayoutGuide属性是只读的,你不能阻止它发生变化。

您可以将商品固定在topLayoutGuide中,但是添加到超级景观。这应该可以解决你的问题。

enter image description here

+1

谢谢:-)超级视图约束似乎只有通过截图上的相同菜单完成才可用。 – Etan

+0

这是一个奇妙的提示! – algal

+0

太棒了!你节省了我的时间〜 – seapy