【发布时间】:2014-03-12 10:56:33
【问题描述】:
我处理在 Interface Builder 中设置的自动布局。当我在运行时隐藏状态栏时,我不想偏移固定到顶部布局指南的视图。
我发现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
【问题讨论】:
-
不完全清楚您要达到的目标。无论状态栏是否显示,您是否试图让视图在固定位置显示元素?还是这是 iOS6/7 切换问题?如果在布局组件与运行时结果时出现问题,您还可以隐藏 IB 中的状态栏。
-
我在运行时隐藏状态栏,此时 UI 会发生变化。原因在
topLayoutGuide。当状态栏隐藏时,我想将 UI 保持在其位置。 -
您是在显示视图然后-然后-摆脱状态栏,还是在显示视图之前告诉状态栏不要出现?
-
恐怕我们在谈论不同的事情......
标签: xcode ios7 interface-builder autolayout statusbar