基于查看的应用程序,默认视图和框架位置

时间:2011-06-05 19:28:45

标签: iphone uiviewcontroller

我使用Apple的模板创建了一个基于视图的应用程序。我将代码添加到viewDidLoad方法:

NSLog(@"origin (x, y): (%f, %f)", self.view.frame.origin.x, self.view.frame.origin.y);
NSLog(@"frame (w, h): (%f, %f)", self.view.frame.size.width, self.view.frame.size.height);

我的输出是:

2011-06-05 12:12:02.907 ViewBasedApp[1753:207] origin (x, y): (0.000000, 20.000000)
2011-06-05 12:12:02.908 ViewBasedApp[1753:207] frame (w, h): (320.000000, 460.000000)

为什么XCode将原点放在(0,20)而不是(0,0)?我没有更改任何其他默认设置。

我问的原因是当我使用基于Window的应用程序并添加我自己的UIViewController子类并通过以下方式以编程方式添加它:

SomeViewController *vc = [[SomeViewController alloc] initWithNibName:@"HomeView" bundle:nil];
    self.homeViewController = vc;
    [self.window addSubview:homeViewController.view];
    [vc release];

我的输出是:

2011-06-05 12:14:47.405 WhereAmIiPhone[1780:207] origin (x, y): (0.000000, 0.000000)
2011-06-05 12:14:47.405 WhereAmIiPhone[1780:207] frame (w, h): (320.000000, 460.000000)

我想知道为什么原点20分的差异以及我可以做些什么以避免让我的观点被抛出20分。感谢。

1 个答案:

答案 0 :(得分:0)

我认为这是由于状态栏高度为20px。

这是正常的,您不必担心这一点,只需确保您的视图高度为460点。

无论如何如果你想隐藏你可以添加的状态栏:

  

状态栏最初隐藏否

到你的info.plist

但请注意,苹果要求你为这一点感到厌倦。

修改

以20分降低你的观点尝试:

   mapview.frame = CGRectOffset(mapView.frame,0,20).