2010-05-14 63 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。