2011-04-21 103 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

相关问题