删除 UITableView 中 UINavigationController 上方的灰色条
Posted
技术标签:
【中文标题】删除 UITableView 中 UINavigationController 上方的灰色条【英文标题】:Removing grey bar above UINavigationController in a UITableView 【发布时间】:2011-06-01 11:50:08 【问题描述】:我正在以编程方式创建一个带有 UINavigationController 的 UITableView:
- (void) displayView:(int)intNewView
NSLog(@"%i", intNewView);
[currentView.view removeFromSuperview];
[currentView release];
switch (intNewView)
......
case 5:
vc = [[RootViewController alloc] init];
currentView = [[UINavigationController alloc] initWithRootViewController:vc];
[currentView setTitle:@"Events"];
break;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft
forView:self.view
cache:YES];
[self.view addSubview:currentView.view];
[UIView commitAnimations];
但是,当视图出现时,导航控制器上方有一个恼人的灰色条,我的其他视图都没有受到此影响。只是带有 UITableView 和 NavigationController 的视图。
任何想法是什么导致了这个以及如何删除它?
谢谢,
杰克
【问题讨论】:
检查这个:http://***.com/questions/1054539/not-sure-why-uiview-is-being-nudged-up-by-around-10px 【参考方案1】:UINavigationController
期望成为窗口中的根视图,因此它包含状态栏。如果将它放在另一个包含状态栏的视图中,则会绘制第二个空状态栏,看起来像“位于导航控制器上方的恼人的灰色栏”。
【讨论】:
【参考方案2】:当 UINavigationController 初始化时,它会期望 iPhone 的状态栏出现在屏幕顶部。因此,为了适应这一点,视图基本上向下移动了一点。但是,由于我的 UINavigationController 在我的 RootViewController 内,因此 UINavigationController 不必适应状态栏,因此可以使用放置在我的 RootViewController 的 viewDidLoad 方法内的以下行“向上移动”适当的距离:
self.navigationController.view.frame = CGRectMake(0, -20, 320, 480);
现在当程序运行时,我的视图顶部没有灰色条/灰色空间。
感谢您的所有帮助,为我指明了正确的方向。
杰克
【讨论】:
查看 UIViewController(其中 UINavigationController 是子类)的 WantsFullScreen 属性。以上是关于删除 UITableView 中 UINavigationController 上方的灰色条的主要内容,如果未能解决你的问题,请参考以下文章
iOS UITableView删除组中唯一行,即[UITableView _endCellAnimationsWithContext:] warning