我创建了一个空项目(XCode 4.2 IOS SDK 5),我为它添加了一个新视图并使其成为appDelegate中的根视图控制器,因此当应用程序运行时,它会正确显示该视图,但是,我在视图中添加了tabbarcontroller,在新创建的视图中为它创建了一个IBOutlet,并将此行添加到视图的viewDidLoad方法中:
[self.view addSubview:self.tabController.view];
所以标签栏在iphone模拟器中正确加载,但有一点我无法解决的问题:该标签栏的一半向下移动到模拟器,这会阻止标签的标题出现,完全如下面的屏幕截图所示:
如何解决此问题?
答案 0 :(得分:2)
很可能是因为状态栏。但是,因为插入控制器的子视图可以是任何大小,最通用的解决方案是:
[tabController.view setFrame:self.view.bounds];
(假设是self.view - 是视图,你在哪里添加它)
答案 1 :(得分:1)
标签栏上的视图高480像素,但由于状态栏,您添加到的视图小于该视图。这意味着它开始22px太低,结束22px太低 - 离屏幕底部。
如果您希望标签栏对应用程序是全局的,请将其链接到应用委托上的IBOutlet,然后在您的didFinishLaunching方法中执行此操作:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// ...
// Add the tab bar controller's view to the window and display.
[window addSubview:tabController.view];
[window makeKeyAndVisible];
return YES;
}
这会将其添加到主窗口,而不是另一个视图。这会将其固定在屏幕顶部,因此底部将位于屏幕的底部。