iOS ChildViewController 有不同的视图

Posted

技术标签:

【中文标题】iOS ChildViewController 有不同的视图【英文标题】:iOS ChildViewController has different view 【发布时间】: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 检查器中? 【参考方案1】:
    检查 CV1 中的滚动视图是否没有对 topLayoutGuide 的约束 尝试覆盖 CV1 的 automaticallyAdjustsScrollViewInsets 并返回 NO

【讨论】:

以上是关于iOS ChildViewController 有不同的视图的主要内容,如果未能解决你的问题,请参考以下文章

Phonegap/iOS - 如何推送 childviewcontroller?

iOS ChildViewController使用示例

iOS7 呈现类似于 MFMailComposeViewController for iPad 的 childViewController

导航栏未显示在 childViewController 内

UIPageViewController uiNavigationController childViewController 在 ios 中的滚动问题

自动将事件从 ChildViewController 传递到 parentViewController