【问题标题】:iOS ChildViewController has different viewiOS ChildViewController 有不同的视图
【发布时间】:2016-07-18 11:35:30
【问题描述】:

我有一个容器视图控制器和两个子视图控制器(CV1 和 CV2)。 CV1 有一个滚动视图,CV2 有 UITableView,我可以成功地在子视图控制器之间使用,但似乎 CV1 在顶部添加了 ~64 填充,但不是为 CV2。并且导航栏对两者都是隐藏的。 我正在使用此代码:

-(void)displayContentController:(UIViewController *)content withFrame:(CGRect)frame {
    [self addChildViewController:content];
    content.view.frame = frame;
    [self.view addSubview:content.view];
    [content didMoveToParentViewController:self];
}

我已经仔细检查了我传递的 frame 值是否正确 CV1 仍在添加额外的空间

【问题讨论】:

  • 你能解释一下吗
  • 这是一种扭曲的行为,我从未遇到过这种情况,因此提出了问题。似乎它为 CV1view 框架添加了一些额外的点(在检查框架时它返回正确的框架(0,54,320,514))但是视图没有定位在它应该在的位置(即视图位于(0, 118, 320,514))。
  • 你用过Xcode的视图调试功能吗?它可以告诉您正在使用什么逻辑(约束)来计算视图位置和大小。
  • 感谢@Phillip Mills,Xcode 的视图调试提供了帮助。我在视图上添加了一个明确的高度约束。感谢所有的答案。
  • 只是一个后续问题,如果添加了约束,那么为什么它没有出现在 Xcode 检查器中?

标签: ios objective-c uiviewcontroller uiscrollview


【解决方案1】:
  1. 检查 CV1 中的滚动视图是否没有对 topLayoutGuide 的约束
  2. 尝试覆盖 CV1 的 automaticallyAdjustsScrollViewInsets 并返回 NO

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-19
    • 2018-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多