2011-04-21 130 views
0

我確定這是一個我不知道如何解釋我的問題的問題,但我很茫然。調整UITabBarController子視圖的大小

我正在開發一個應用程序,其中包含兩個子視圖,這些子視圖始終位於屏幕的頂部(佔用總共114個像素,包括狀態欄)。我希望剩下的空間能夠被UITabBar所接受,並且它是子視圖。

我能夠得到的最接近的標籤視圖大小正確,但定位在0,0,因此它在我的持久子視圖下。

// Create the main toolbar 
toolbar = [[UIToolbar alloc] init]; 
[toolbar sizeToFit]; 
toolbar.frame = CGRectMake(0.0, 20, 768, 44); 

UILabel *textLabel = [[UILabel alloc] init]; 
textLabel.frame = CGRectMake(240, 20, 300, 40); 
textLabel.textAlignment = UITextAlignmentCenter; 
textLabel.backgroundColor = [UIColor clearColor]; 
textLabel.text = @"Character Name"; 
[self.window addSubview:textLabel]; 
[textLabel release]; 

... 

// Create the stats bar 
StatsViewController *statsView = [[StatsViewController alloc] init]; 
statsView.view.frame = CGRectMake(0.0, 64, 768, 50); 
[self.window addSubview:statsView.view]; 

// Create Tab Bar Controller and Tab View Controllers 
tabBarController = [[UITabBarController alloc] init]; 

... 

[self.window setRootViewController:tabBarController]; 
[tabBarController release]; 

[self.window addSubview:toolbar]; 
[self.window bringSubviewToFront:statsView.view]; 
[self.window bringSubviewToFront:textLabel]; 
[self.window makeKeyAndVisible]; 
return YES; 

回答

0

標籤欄控制器(或任何視圖控制器,對於這個問題)總是會嘗試這樣,它佔用了它的父的整個邊界來調整它的視圖。所以,如果你想要標籤欄控制器不這樣做,我會創建另一個普通的視圖控制器,成爲你的新的根視圖控制器。

在該視圖控制器視圖中,您將創建2個容器子視圖,其中一個用於statsView,另一個用於製表欄控制器。現在將標籤欄控制器的視圖添加到一個容器視圖,並將StatsViewController的視圖添加到另一個視圖。

(注:我沒有測試這個)

+0

我不知道我明白了,爲什麼創建包含statsView,爲什麼不只是一個的viewController用容器視圖(只是一個UIView實例的子視圖,對不對? )的大小來容納tabBarController? – hokiewalrus 2011-04-22 16:37:49

+0

我創建了一個新的'UIVIewController'大小正確,並在新的viewController的'viewDidLoad'中以編程方式創建了'UITabBarController'。我可以看到選項卡欄,但是沒有任何子視圖加載並選擇選項卡會使程序崩潰。我感覺我很親密。 – hokiewalrus 2011-04-22 20:29:16

相關問題