2012-01-09 81 views
0

在我的應用程序中,我開發了一個嚮導,其中我爲用戶提供了一種逐一設置其詳細信息的方法。完成所有步驟後,用戶將被重定向到TabBar將進入圖片的屏幕。根據標籤欄控制器調整視圖控制器的大小

這裏的問題是,用戶可以使用嚮導(沒有TabBar控制器)和正常流(使用TabBar控制器)訪問相同的視圖控制器。在嚮導中,我使用的是尺寸爲320x480的視圖控制器,正常流程中的視圖控制器也是如此。但是,無論何時使用TabBar加載任何視圖控制器,底部的44像素視圖都會隱藏在TabBar之後。

我知道我可以手動設置視圖大小,通過檢測TabBar是否存在,但在這種情況下,視圖控制器的數量更多,其已經設計的大小爲320x480。

我曾嘗試過蘋果文檔中給出的所有方法,但似乎沒有一種方法適用於我。

以下是我嘗試過的方法,以及一些xib設置。

[self setWantsFullScreenLayout:YES]; 
self.view.autoresizingMask = UIViewAutoresizingFlexibleHeight; 
[self.view setAutoresizesSubviews:YES]; 
[self.navigationController.view setNeedsLayout]; 

有沒有什麼辦法根據TabBar是否存在來設置視圖控制器的高度?

回答

-1

我無法找到一個好的答案,所以我最終添加了BOOL,hasTabBar。我根據創建視圖的位置將其設置爲true或false,並使用它來計算我的佈局。

frame.size.height -= (hasTabBar*50); // works nicely. 
+1

這不適用於不同的設備,外形因素。 – Barry 2014-08-06 19:18:42

0

如果您使用的故事板,選擇每個選項卡VC和清除框View Controller>Extend Edges>Under Bottom Bars

+0

這是投了票,但我不知道爲什麼。它爲我工作(Xcode 8)。 – Brett 2016-11-20 18:29:44

2

在我而言,(狀態欄/導航欄/隱藏的TabBar)這個工作

//Add this in your ViewController 
self.edgesForExtendedLayout = UIRectEdgeBottom; 
self.extendedLayoutIncludesOpaqueBars = YES; 

但是巴里的答案是更好,如果你用故事板,但我不能爲這個VC。 試過iOs7和iOs 8.

相關問題