为什么导航会在视图中显示状态栏下方20个像素?

时间:2011-05-01 19:18:30

标签: ios4

  

可能重复:
  UIWebView on iPad size

- (void)viewDidLoad {

    [super viewDidLoad];

    UINavigationController *naviController = [[UINavigationController alloc]init];

    [self.view addSubview:naviController.view];

}

如果我在视图中添加导航控制器,它会显示状态栏下方约20个像素。 我希望它出现在状态栏下方。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

我遇到过同样的问题。

此讨论很有帮助:UIWebView on iPad size

Tony的回答帮助我发现了这个伎俩:

naviController.view.frame = self.view.bounds;

答案 1 :(得分:0)

原来设置视图高度可以解决此问题。你可以在nib(xib)文件中或在创建视图时以编程方式设置view.frame = CGRect(0,0,320.0 460.0);或者它应该是什么(在你的情况下它看起来应该是460.0,因为你有状态栏)。

重点是,如果视图尺寸小于屏幕高度,则无法保证控件的显示位置。

答案 2 :(得分:0)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    CGRect frame = CGRectMake(0, 0, 320.0, 480.0);
    viewController.view.frame = frame;
    [self.window addSubview:viewController.view];
    [self.window makeKeyAndVisible];

    return YES;
}

我改变了如上。有用。到现在为止还挺好。如果高度为460,则底部会有空行。视图的绝对坐标为(0,20)。因此,导航栏的坐标为(0,40)。我认为这就是问题所在。我会遇到另一个问题。 也许有办法在显示导航视图之前更改坐标。谢谢。