2010-05-14 74 views
3

我在应用程序委托中启动应用程序期间使用多个控制器。一个控制器用于注册,第二个控制器是tabbar。 tabbar加载正常,但是当我将注册控制器推到窗口上时,内容增加了20个单位,底部有好的白色空白屏幕。因此,我在其viewdidload方法中重新创建了注册视图控制器的框架,并将其向下滑动了20个单位。该代码是当推送时,ViewController在屏幕下方留下20px白色

self.view.frame = CGRectMake(0, 20, self.view.frame.size.width, self.view.frame.size.height); 

和代码在我的应用程序委托启动应用程序是

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  

    if (![self accountExists]) { 
       //code if account does not exists on iphone app database 
     self.registerAccount = [[registerViewController alloc] initWithNibName:@"registerViewController" bundle:nil]; 
     [window addSubview:registerAccount.view]; 
    } 
    else if([self autoLoginForAnyAccount]){ 
     //code for autologin to app 
    } 
    else { 
     self.tabBarController.selectedIndex = 1; 
     self.tabBarController.delegate = self; 
     [window addSubview:tabBarController.view]; 
    } 
    [window makeKeyAndVisible]; 
    return YES; 
} 

,如果有人知道为什么会出现在底部是白色空间时,登记控制器推然后请与我分享。

回答

1

我找出问题,但不是原因。问题是窗口的大小,即在我的代码中,我创建了registerViewController的实例,因此它的大小是窗口的大小减去状态栏的大小(因为它是必须显示在状态栏下方的视图控制器)。当我推送registerViewController到窗口,然后由于某种原因(我不知道为什么)视图控制器无法识别标题中的状态栏和20px的registerViewController显示在状态栏后面。然后我尝试了代码registerAccount.view.frame = window.frame;,它将我的注册控制器的框架设置为窗口控制器。这删除了底部的空白屏幕,现在查看整个窗口大小,但仍然是20px在状态栏后面,因为我的视图控制器无法看到状态栏的存在。我试图使用代码显示我的整个控制器在屏幕上的状态栏,但我想在顶部的状态栏。

我想通过在我的mainWindow.xib文件中添加UIViewcontroller对象(就像我的标签栏控制器),我指出它的类是registerViewController并加载了registerViewController的nib。我也删除线self.registerAccount = [[registerViewController alloc] initWithNibName:@"registerViewController" bundle:nil];

,并在我的代表取代.h文件中registerViewController *registerAccount;UIViewController *registerAccount;和的MainWindow.xib文件我指出我新增的视图控制器此控制器。现在everthing工作正常,但我仍然不知道为什么viewcontroller无法看到状态栏,当我推送registerViewController的实例。 如果有人知道原因,请在这里与我分享。

+0

你现在知道原因吗?我正在同样的问题上挣扎。 – Hemant 2011-01-13 14:43:51

3

最近我经历了同样的问题。在提及这么多博客后,我发现白色空间问题是由于框架设置不当引起的。

下面是解决方案,即工作在我身边很细......

[self.view setFrame:CGRectMake(0,0, self.view.bounds.size.width, self.view.bounds.size.height)]; 

希望,这将帮助你。

Regards, iApple。