2015-04-01 30 views
2

我正在使用UIPageViewController。在此视图中切换通话状态栏时,它可以很好地调整。如果在加载UIPageViewController之前打开通话状态栏,则页面被按下20pt,并在该空间中显示黑条。通话状态栏将UIPageViewController内容视图向下推

下面是什么,这看起来像一个截图:

screenshot


其他职位推荐使用页面控制器上设置automaticallyAdjustsScrollViewInsets为NO。我已经试过了,它不起作用。我也试着self.edgesForExtendedLayout = UIRectEdgeNone;

的UIPageViewController坐标系的原点设置为0的作品,但感觉不对:

CGRect frame = self.pageController.view.frame; 
frame.origin.y = 0; 
self.pageController.view.frame = frame; 
+1

您是否找到任何可能的解决方案?我正在遇到与您在此处列出的状态栏非常类似的问题。 – speby 2015-04-29 16:16:19

+0

我包含的代码片段用于将页面控制器帧的y原点设置为0。把它放在你的UIPageViewController的'viewDidLoad'方法中。 – ebi 2015-04-29 18:26:35

回答

3

我结束了确保正确的约束解决这个份上我的视图控制器的主视图。下面是一个例子,我将视图控制器的视图作为子视图添加到根视图控制器,然后使用Masonry(https://github.com/SnapKit/Masonry)建立约束,将约束所有子视图控制器的主视图边缘到根视图控制器(它本身已经从Interface Builder具有自动调整掩码)。这解决了我的状态栏的问题,离开那个黑色的空间,因为它正在推动这种观点下(而不是调整大小):

[self.view addSubview:viewController.view]; 
[viewController.view mas_makeConstraints:^(MASConstraintMaker *make) { 
    make.edges.equalTo(self.view); 
}]; 

在你的情况,我没有完整的代码,所以我不不知道肯定,但像这样:

[self.pageController.view mas_makeConstraints:^(MASConstraintMaker *make) { 
    make.edges.equalTo(self.pageController.view.superview); 
}]; 

..应该做的伎俩。

+0

是的,工作!在代码中有一个拼写错误,它应该是'make.edges.equalTo(self.pageController.view.superview);' 我注意到,当通话状态栏被触发时,向下移动子视图的动画是有点janky。你也看到了吗? – ebi 2015-04-30 20:03:53

+0

感谢您的更正。我会更新我的答案(请务必提高我的答案!)。我确实看到了轻微的笨拙,但并不知道更好的解决方法(可能会进一步思考,做一个重新调整大小的动画可能会更顺畅)。但至少这个摆脱了因不重新调整大小而造成的富庶黑色问题。 – speby 2015-05-01 20:57:32

+0

是的,100%认同它比黑色条更好:)再次感谢您的答案! – ebi 2015-05-01 21:42:58