【问题标题】:topLayoutGuide constraints causing view change when UIStatusBar is hidden隐藏 UIStatusBar 时导致视图更改的 topLayoutGuide 约束
【发布时间】:2014-08-11 19:37:35
【问题描述】:
我在UIStoryboard 中有一个UIViewController,它可以隐藏它的UIStatusBar。此 VC 中的视图都包含一个约束,以保持其相对于topLayoutGuide 的位置。
我遇到了一个问题,当状态栏被隐藏时,所有子视图都会猛拉 20 像素。我已经在控制台上记录了 topLayoutGuide 值,隐藏时它的长度似乎从 20 变为 0。
有什么办法可以防止子视图在隐藏状态栏的同时保持这个约束时抖动 20px?
【问题讨论】:
标签:
ios
objective-c
autolayout
uistoryboard
uistatusbar
【解决方案1】:
topLayoutGuide的重点是它随着状态栏动态移动。您可以尝试在加载视图控制器时获取topLayoutGuide 的length 属性,并创建一个使用该值作为其constant 的约束。
这只有在加载时状态栏可见时才有效,如果状态栏变高就会中断,例如如果你开始打电话。更好的方法可能是将该值用作约束的常数,该约束将顶部空间固定为 >= 距顶部的那个高度,并以较低的优先级设置一个等于该长度的约束,因此它可以获得如果需要,离屏幕顶部更远,但不要更近。