ios - Container View 好像有 UINavigationBar 一样被下推?

标签 ios objective-c uiviewcontroller uikit ios7

我有一个带有容器 View 的 UIViewController。这个容器 View 包含一个 UITableViewController。

UIViewController 嵌入在 UINavigationController 中。 我通过更改色调颜色、条色调颜色和标题文本属性来配置 NavigationBar,但是当我尝试更改半透明度时出现问题。我通过删除所有其他自定义代码来挑出问题。 每当我在 UIViewController 的 -viewDidLoad 中执行此操作时:

self.navigationController.navigationBar.translucent = NO;

Container View 在自身顶部添加了一些空间,就好像它有自己的导航栏一样。每当我将半透明设置为 YES 时, View 都会正确显示所有内容。每当我将 translucent 设置为 NO 时,这只发生在包含的 View 上。

这里有什么我遗漏的吗?

我尝试在包含的 View 上将半透明设置为 YES 并将其设置为隐藏,但没有任何效果。 不知何故,包含的 View 继承了父容器的属性? 每当我将半透明设置为 NO 时,如何避免在包含的 View 上创建这个额外的空间?

我希望设置半透明只影响半透明,而不影响 View 的位置。

当半透明 = YES

+---------------------------------+
|                                 |
|     UINavigationBar             |
|                                 |
+---------------------------------+
|                                 |
|                                 |
|                                 |
|                                 |
|                                 |
|    UITableViewController        |
|    in a Contained View          |
|                                 |
|                                 |
|                                 |
|                                 |
|                                 |
|                                 |
+---------------------------------+

半透明时 = 否

+---------------------------------+
|                                 |
|     UINavigationBar             |
|                                 |
+---------------------------------+
|                                 |
|blank space created on top of view
|                                 |
+---------------------------------+
|                                 |
|                                 |
|                                 |
|                                 |
|                                 |
|                                 |
|     UITableViewController       |
|     in a Contained View         |
|                                 |
+---------------------------------+

附:我的观点比这更复杂,我只是在简单化。

最佳答案

您在这里缺少的是一个半透明的导航栏位于您的 View Controller 的 View 之上,而一个非半透明的导航栏将您的 View Controller 的 View 向下推(有效地调整它的大小)。

所以这里发生的情况是,对于半透明导航栏,空白区域实际上隐藏在栏下方,而当栏不透明时,它被“向下推”。

有很多方法可以解决,主要取决于您是否使用自动布局。

关于ios - Container View 好像有 UINavigationBar 一样被下推?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18890192/

相关文章:

ios - 在 viewDidLoad 中分配 UIViewControllers。这是一个错误吗?

ios - 当另一个 viewController 隐藏状态栏时,UINavigationBar 在状态栏下方移动

xcode - 在上一个 View 上居中弹出窗口

ios - 如何在 "pull to refresh"时随机化 uıcollecitonview 单元格,如 Instagram 探索页面

ios - iphone 应用程序因内存分配而崩溃

iphone - 这两种方法对性能的影响相同还是不同?

ios - 如何在 cocos2d-iphone 中创建 sprite 后的静态路径?

ios - UIView 只会动画一次

ios - 应用程序未运行时监听信标

ios - 点击 UITextField 时如何禁用键盘?