iPhone:在UINavigationController的顶部空间怪异(iPhone: Weir

2019-06-24 02:51发布

我在与添加一个UINavigationController我的iPhone应用程序一个奇怪的问题。 我想补充的控制器如下:

myViewController *viewController = [[myViewController alloc] initWithNibName:@"myView" bundle:nil];

myNavigationViewController *navigationController = [[myNavigationViewController alloc] initWithRootViewController:viewController];

UIView *finalView = myeNavigationViewController.view;

[self.view addSubview:finalView];

一切似乎都按计划进行,除了我得到我的状态栏和UINavigationController的标题栏之间视图顶部一个奇怪的白色空间里工作。 替代文字http://www.andrewskinner.name/problem.png

我在网上搜索,但真的不知道该怎么寻找。 有没有其他人有这个问题? 你能指出我的一些帮助的方向是什么?

提前致谢。

Answer 1:

看看在这个问题的答案:

不知道为什么被周围10px的微幅向上的UIView



Answer 2:

什么线路

UIView *finalView = myeNavigationViewController.view;

添加到代码? 这是多余的,因为你可以在没有首先将其分配给一个UIView直接添加视图 - 再加上它是不正确的,它引用了myNavigationController而不是navigationController ..
我倾向于这样做

myViewController *viewController = [[myViewController alloc] initWithNibName:@"myView" bundle:nil];    
myNavigationViewController *navigationController = [[myNavigationViewController alloc] initWithRootViewController:viewController];
[navigationController.view setFrame: [self.view bounds]];
navigationController.delegate = self;
[self.view addSubview:[navigationController view]];

设置帧边界也会删除你在问顶部的空白。



Answer 3:

问题是,UINavigationController的理想应该是一个UIWindow的直接子视图。 它将定位和自身大小的权利。 当您添加的UINavigationController成一个UIWindow子视图的另一个自定义视图,你需要考虑是否在一个UIWindow显示或不显示状态栏照顾这个自定义视图的位置和大小。

我的建议是为了使定制视图的UINavigationController的一个子类:

mySubClass_NavigationController*nav=[[mySubClass_NavigationController alloc] initWithRootViewController:viewController ];

[myUIWindow addSubview:nav.view];

和mySubClass_NavigationController里面,你可以做一切你在你自己现在做的(无论是控制器)的定制。



Answer 4:

我这个挣扎了一会儿也使用非常相似的代码来运算的,并也有我上面的导航控制器白条。

添加的UINavigationController如在UITabController视图时发生了我的问题。 在我的情况这个空间被的UINavigationController的考虑到状态栏,它实际上是重叠的,我是想在UINavigationController的显示视图的一部分的UINavigationBar的部分引起的。

这是我的loadView结束了在我的UITabBarController视图控制器的一个代码。

SomeUITableViewController *screenList = [[SomeUITableViewController alloc] init];

UINavigationController *navController = [[UINavigationController alloc]
                                         initWithRootViewController:screenList];

CGRect frame = [[navController navigationBar] frame];

frame.origin.y = 0; // Was 20, set to 0 to not take into account the status bar.

[[navController navigationBar] setFrame:frame];

[self setView:[navController view]];

还有一些更多信息http://discussions.apple.com/message.jspa?messageID=7890362 。



Answer 5:

有一个在IB一个不起眼的财产被称为“上推隐藏底栏”。 只要检查一下。 它解决了这个问题对我来说。



Answer 6:

也许你已经在某种程度上得到了自己两个UIViews,每一个状态栏。 检查厦门国际银行。



文章来源: iPhone: Weird space at the top of UINavigationController