我在与添加一个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
我在网上搜索,但真的不知道该怎么寻找。 有没有其他人有这个问题? 你能指出我的一些帮助的方向是什么?
提前致谢。
看看在这个问题的答案:
不知道为什么被周围10px的微幅向上的UIView
什么线路
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]];
设置帧边界也会删除你在问顶部的空白。
问题是,UINavigationController的理想应该是一个UIWindow的直接子视图。 它将定位和自身大小的权利。 当您添加的UINavigationController成一个UIWindow子视图的另一个自定义视图,你需要考虑是否在一个UIWindow显示或不显示状态栏照顾这个自定义视图的位置和大小。
我的建议是为了使定制视图的UINavigationController的一个子类:
mySubClass_NavigationController*nav=[[mySubClass_NavigationController alloc] initWithRootViewController:viewController ];
[myUIWindow addSubview:nav.view];
和mySubClass_NavigationController里面,你可以做一切你在你自己现在做的(无论是控制器)的定制。
我这个挣扎了一会儿也使用非常相似的代码来运算的,并也有我上面的导航控制器白条。
添加的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 。
有一个在IB一个不起眼的财产被称为“上推隐藏底栏”。 只要检查一下。 它解决了这个问题对我来说。
也许你已经在某种程度上得到了自己两个UIViews,每一个状态栏。 检查厦门国际银行。