最近在踩坑storyboard,发现了许多奇奇怪怪的问题。逐步把这些问题汇总记录下来,希望可以帮到其他人。
在使用storyboard中push一个新界面时,需要隐藏底部的tabbar。这时只需在storyboard中选中属性Hide Bottom Bar On Push 即可实现push界面后隐藏。如下图:

跳转后界面的中有一个按钮,其约束如下图:

看起来没有什么问题
但是,使用的过程中发现会出现界面跳动的现象。push到下一个界面后发现界面会突然往下跳动。

为什么会出现如此的情况。排查后发现,按钮下边距的相对并不是self.view
而是bottom layout guide

分析原因,hide bottom tabbar后,bottom layout guide 会变化,而且是延迟变化的,可能是在viewDidAppear后,因为已经明显可见的界面跳动。所以设置的时候应该基于
view
,而不要基于guide
,以免出现难以排查的界面显示问题。
网友评论
我也是纯代码转SB,之前纯代码页面,都是Push之前设置vc.hidesBottomBarWhenPushed = YES; 显示都是正常的,换了SB之后,勾选那个选项,突然发现这个隐藏效果是有延迟的,肉眼都可见的延迟,然后把SB里面的那个勾选去掉,再重新用代码写属性也不行,找了半天,直到看到这篇文章,发现竟然是这个约束问题导致的,真是解决了一大困惑,感谢分享!