我的应用程序(简化) struct 如下:

UITabBarController,其中一个UINavigationController持有UITableViewController作为根视图控制器.

当点击其中一个table view控制器单元时,我按下一个常规的UIViewController(我们称之为VC)结尾,隐藏底部的选项卡栏.(使用"按下时隐藏底部栏"标志)

在storyboard中,我向VC添加了一个常规的UIView子类,看起来像一个底部栏,我使用Auto Layout将其固定到VC视图的底部.

The problem

我知道这不是最好的解释,所以我加了very simple project来说明这个问题.

推荐答案

问题在于视图和底部布局指南顶部之间的特定约束.

在此处输入图像描述

Select 约束并编辑其"第二项"属性

在此处输入图像描述

在这里你需要 Select 底部

在此处输入图像描述

一旦你有了它,粉色视图就不再受布局指南的影响.《布局指南》似乎承认,只有在按下的视图控制器的根视图位于主屏幕的边界内时,选项卡栏才会隐藏,并且只有在动画完成时才会发生这种情况.

这就是为什么视图层次需要重新布局,这会导致不需要的动画.

Objective-c相关问答推荐

警告:格式字符串不是字符串文字(可能不安全)

协议与类别

MKMapView zoom 到 viewDidLoad 上的用户位置?

ios10:viewDidLoad 框架宽度/高度未正确初始化

让 iPhone sleeping

iOS 心率检测算法

使用 ARC,什么更好:alloc 或 autorelease 初始化程序?

UIRefreshControl iOS 6 xcode

NSView 的边界与框架

dispatch_semaphore_dispose 上的 EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)

OSStatus 错误代码 -34018

从 UIPageViewController 中移除视图控制器

未知类型名称类;您指的是 'Class' 吗?

Cocoa 与 Cocoa Touch - 有什么区别?

从 NSString 中删除换行符

iOS Buttons - 添加边框

UICollectionView 仅在用户双击时调用 didSelectItemAtIndexPath,当用户单击时不会调用

嵌入自定义容器视图控制器时,内容位于导航栏下方.

UITableViewCell 点击展开

如何本地化 iOS 故事板