按下时,ViewController从屏幕下方留下20px白色

时间:2010-05-14 07:29:54

标签: iphone objective-c

我在app delegate中启动应用程序时使用多个控制器。一个控制器用于注册,第二个控制器用于标签栏。 tabbar正在加载正常,但当我在窗口上推注册控制器时,内容上升了20个单位,我在底部有好的白色空白屏幕。因此,我在其viewdidload方法中重新创建了我的注册视图控制器的框架,并向下滑动了20个单元。代码是

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

如果有人知道为什么在推出注册控制器时底部有空白区域,那么请与我分享。

2 个答案:

答案 0 :(得分:3)

最近,我遇到了同样的问题。在推荐了如此多的博客和Q& A论坛,我发现空白区域问题是由于框架设置不当造成的。

以下是解决方案,在我这方面非常好......

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

希望,这会帮助你。

此致 iApple。

答案 1 :(得分:1)

我找出了问题,但不是原因。问题是窗口的大小,即在我的代码中我创建了registerViewController的实例,因此它的大小是窗口的大小减去状态栏的大小(因为它是一个必须显示在状态栏下方的视图控制器)。当我将registerViewController推入窗口时,由于某种原因(我不知道为什么)视图控制器无法识别标题中的状态栏,并且registerViewController的20px显示在状态栏后面。然后我尝试了代码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工作正常但我仍然不知道为什么当我推送registerViewController的实例时,viewcontroller无法看到状态栏。 如果有人知道原因,请与我分享。