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

Lor*_*olt 12 iphone objective-c uinavigationbar ios ios7

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

回到iOS 6,没有那条水平线,因此视图将与导航栏融为一体,就像它们是相同的图像一样.现在我不知道如何删除它...

我已经尝试调整视图/导航栏的大小,但它没有帮助.有任何想法吗?

Jam*_*rpe 28

其他答案对我不起作用.要删除分隔符,我必须设置背景图像和阴影图像,如下所示:

[[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];
Run Code Online (Sandbox Code Playgroud)


vej*_*tin 20

添加这个:

[[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];
Run Code Online (Sandbox Code Playgroud)

在您的AppDelegate.m中的应用程序didFinishLaunchingWithOptions方法


mic*_*tox 5

试试吧

self.navigationController.navigationBar.translucent = NO;
Run Code Online (Sandbox Code Playgroud)

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

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

[[UINavigationBar appearance] setTranslucent:NO]
Run Code Online (Sandbox Code Playgroud)

或者,您需要在首次实例化导航控制器时执行此操作.例如,如果导航控制器是您的应用程序的根视图控制器,您可以这样做

UINavigationController *nav = (UINavigationController *)self.window.rootViewController;
nav.navigationBar.translucent = NO;
Run Code Online (Sandbox Code Playgroud)

在你的

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
Run Code Online (Sandbox Code Playgroud)

如果,在另一端,您可以通过segue实例化它(在适当的视图控制器中)

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

等等(如果您实际上是从代码中实例化它,它应该是最简单的选项).