【发布时间】:2017-03-03 08:45:52
【问题描述】:
我遇到了一个奇怪的 UI 问题。请在下面找到详细信息。
- 我创建了一个示例演示项目来展示该问题。要求非常简单(也附有屏幕截图)。该应用以一个 UINavigationController 的 ViewController 开头,因此它显示了一个 NavigationBar。
- 2 个元素的 UISegmentController 已添加到 UINavigationBar。
- 每个段选择都会显示 2 个子 TableViewController。
- 每个 ViewController 都是使用 NSLayoutConstraints 添加的。并且每次都会删除较大的子 VC,并添加新的子 VC,而不是隐藏和显示。虽然我们不是每次都创建 VC 对象。它有很强的参考价值
- 子 VC 被添加到 RootVC 的视图中,而不是具有 ContainerView。也尝试了 ContainerView,但结果相同。
现在的问题是,第二个子 VC 总是放在导航栏下面(请参考随附的屏幕截图)。但是第一个非常好,因为它位于 NavigationBar 下方。如果我将 NavigationBar 半透明属性设置为“否”,则两者都可以正常工作。但是将 NavigationBar 半透明属性设置为“YES”,只有第一个会正确放置,第二个不会。哪个 ChildViewController(firstVC 或 secondVC)并不重要,它发生在第一个之后添加的 childVC。对这个奇怪的问题有什么见解吗?我已经创建了一个示例演示 project 如果你们想检查那里发生了什么..
提前谢谢..
【问题讨论】:
-
你为什么不在 rootVC 中添加一个 UIView 并将你的 viewcontrollers 视图添加到你的 UIView.. 我的意思是说使用容器视图
-
嗨@karthikeyan,感谢您的回复。我也使用过 ContainerView 并在帖子中提到了相同的内容。但问题依然存在。我再说一遍,如果 NavigationBar 半透明属性设置为 NO,一切正常..
-
它与容器视图一起工作正常。您需要自动禁用AdjustsScrollViewInsets
标签: ios objective-c uiviewcontroller nslayoutconstraint childviewcontroller