在我的应用程序中,我使用autolayout从bottomLayoutGuide对齐标签的标准数量.当应用程序首次启动时,所有内容都按照我想要的方式进行布局,但是当我切换选项卡并返回标签时,标签栏控制器已经消失.
如果我旋转设备,景观视图正确显示,当我旋转到纵向时,视图恢复正常.我似乎无法弄明白导致这种行为的原因.谢谢你的帮助!
解决方法
这是由于iOS7中的一个错误,底部布局指南错误地设置为高度0而不是标签栏的高度.旋转设备时,底部布局指南设置正确.
目前,您最好的选择是禁用底部扩展布局:
- (UIRectEdge)edgesForExtendedLayout { return [super edgesForExtendedLayout] ^ UIRectEdgeBottom; }
对于从标签栏控制器显示的每个视图控制器执行此操作.请记住将标签栏视图控制器的背景颜色设置为适合您的应用程序.
确保在https://bugreport.apple.com打开一个错误报告
要详细说明一下,在切换视图控制器时,看起来viewDidLayoutSubviews被称为两次.第一次,一切设置正确,但第二次底部布局指南高度为0.您可以从堆栈跟踪中看到第一个来自标签栏布局,而第二个调用来自预定的CALayer布局,这是不正确的.