2015-04-01 67 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