我使用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分。感谢。
答案 0 :(得分:0)
我认为这是由于状态栏高度为20px。
这是正常的,您不必担心这一点,只需确保您的视图高度为460点。
无论如何如果你想隐藏你可以添加的状态栏:
状态栏最初隐藏否
到你的info.plist
但请注意,苹果要求你为这一点感到厌倦。
修改强>
以20分降低你的观点尝试:
mapview.frame = CGRectOffset(mapView.frame,0,20).