iOS 7自动布局 - 忽略通话状态栏

时间:2013-12-23 07:06:42

标签: objective-c ios7 autolayout statusbar

使用自动布局约束,我正在尝试设置一个永不改变的垂直位置的子视图,即使在显示通话中状态栏(或其他一些非标准状态栏)时也是如此。我不想将视图相对于底部布局指南定位,因为我希望它的y坐标对于3.5“和4”设备是相同的。

以下是我想要发生的事情的说明:

Standard Status Bar In-Call Status Bar

最初,我为其y位置设置了一个子视图,其中包含“Top Space to:Top Layout Guide”约束。使用此配置,In-Call状态栏将子视图向下推20px:

Nope

接下来,我尝试用“Top Space to:Superview”替换该约束,其中Superview是控制器的根视图。没变。是否有其他方法可以为具有自动布局约束的视图维持恒定的y位置?我知道我可以通过订阅UIApplicationDidChangeStatusBarFrameNotification来手动处理这个问题,但是如果可以的话,我想保持简单。

2 个答案:

答案 0 :(得分:1)

您的标签位于视图开头和标签开头之间的顶部。状态栏增长时,您的视图会缩小。如果您希望标签保留在同一位置,您可以收听UIApplicationWillChangeStatusBarFrameNotification通知并调整视图的大小和原点以抵消状态栏的额外空间。如果您只希望标签向上移动,您还可以收听上面的通知,并相应地调整顶部空间约束。

答案 1 :(得分:0)

不,你不能。

画面在纵向中失去了20像素的高度:(并且布局指导并不关心它。

所以你要么做Leo Natan所说的并使用通知UIApplicationWillChangeStatusBarFrameNotification 或者您必须使用bottomConstraint,因为您不想这样做。

相关问题