ios - 使用 NSLayoutContraints 添加第二个 subview Controller ,始终将其放置在导航栏下方,而不是导航栏之后

标签 ios objective-c uiviewcontroller nslayoutconstraint childviewcontroller

我正面临一个奇怪的 UI 问题。请在下面找到详细信息。

  • 我创建了一个示例演示项目来展示这个问题。要求非常简单(也附有屏幕截图)。该应用程序以一个 ViewController 开始,它是一个 UINavigationController,因此它显示一个 NavigationBar。
  • 已将 2 个元素的 UISegmentController 添加到 UINavigationBar。
  • 有 2 个子 TableViewController 将针对每个段选择显示。
  • 每个 ViewController 都是使用 NSLayoutConstraints 添加的。并且每次都会删除较旧的子 VC,并添加新的而不是隐藏和显示。虽然我们不是每次都创建 VC 对象。具有很强的借鉴意义
  • 子 VC 被添加到 RootVC 的 View 中,而不是有一个 ContainerView。也尝试了 ContainerView,但结果相同。

现在的问题是,第二个子 VC 总是放在导航栏下面(请引用所附的屏幕截图)。但第一个非常好,因为它位于 NavigationBar 下方。如果我将 NavigationBar 半透明属性设置为“NO”,两者都可以正常工作。但是当 NavigationBar 半透明属性为“YES”时,只有第一个会被正确放置而不是第二个。哪个 ChildViewController(firstVC 或 secondVC)并不重要,它发生在第一个之后添加的 childVC。对这个奇怪的问题有什么见解吗?我创建了一个示例演示 project如果你们想检查那里发生了什么..

提前致谢..

First VC Second VC

最佳答案

您是否禁用了选项:Auto adjust scrolls inset?它有问题,仅适用于您 View Controller 的第一个 ScrollView

关于ios - 使用 NSLayoutContraints 添加第二个 subview Controller ,始终将其放置在导航栏下方,而不是导航栏之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42574303/

相关文章:

ios - 使用信标退出/输入 requin 获得误报警报

ios - 如何使用CIContext drawImage :inRect:fromRect: with a CADisplayLink

iphone - 将appdelegate数据传递给ViewController

ios - 如何在 UITabBarController 中获取特定 UIViewController 的索引

ios - 如何跟踪歌曲何时完成 AVAudioPlayer

ios - FMDB 无法识别新数据库

ios - 创建一个与 NSJSONSerialization dataWithJSONObject 一起工作的对象 :options:error:

objective-c - 如何使用 iphone sdk 使用加速度计计算距离?

iphone - 使用objective c读取MP3信息

ios - 当我的应用程序返回前台时调用我的 View 中的方法