标签栏向下移动到模拟器的边界之外

时间:2011-11-20 07:22:38

标签: iphone objective-c ios xcode ios-simulator

我创建了一个空项目(XCode 4.2 IOS SDK 5),我为它添加了一个新视图并使其成为appDelegate中的根视图控制器,因此当应用程序运行时,它会正确显示该视图,但是,我在视图中添加了tabbarcontroller,在新创建的视图中为它创建了一个IBOutlet,并将此行添加到视图的viewDidLoad方法中:

[self.view addSubview:self.tabController.view];

所以标签栏在iphone模拟器中正确加载,但有一点我无法解决的问题:该标签栏的一半向下移动到模拟器,这会阻止标签的标题出现,完全如下面的屏幕截图所示:

screenshot

如何解决此问题?

2 个答案:

答案 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;
}

这会将其添加到主窗口,而不是另一个视图。这会将其固定在屏幕顶部,因此底部将位于屏幕的底部。