导航栏和视图之间的分隔符 – iOS 7

在iOS 7中,导航栏和视图之间有一个灰色分隔符。

回到iOS 6,没有那个水平线,因此这个视图会和导航栏融合,就好像它们是同一个图像一样。 现在我不知道如何删除它…

我试着调整视图/导航栏,但它没有帮助。 有任何想法吗?

尝试

self.navigationController.navigationBar.translucent = NO; 

在你的viewDidLoad方法,让我知道:)

如果你在每个ViewController上都需要这个效果,你可以简单地做:

 [[UINavigationBar appearance] setTranslucent:NO] 

或者您需要在首次实例化导航控制器的位置执行此操作。 例如,如果导航控制器是您的应用程序的根视图控制器,您可以简单地做

 UINavigationController *nav = (UINavigationController *)self.window.rootViewController; nav.navigationBar.translucent = NO; 

在你的

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

另一方面,如果你通过segue实例化你可以做的(在适当的视图控制器中)

 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if([segue.identifier isEqualToString:@"navController"]){ UINavigationController *nav = (UINavigationController *)segue.destinationViewController; nav.navigationBar.translucent = NO; } } 

等等(如果你真的从代码实例化,它应该是最简单的select)。

其他答案不适合我。 要删除分隔符,我必须设置背景图像和阴影图像,如下所示:

 [[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault]; [[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]]; 

添加这个:

 [[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]]; 

在应用didFinishLaunchingWithOptions方法的AppDelegate.m中