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

Posted

技术标签:

【中文标题】导航栏和视图之间的分隔符 - iOS 7【英文标题】:Separator between navigation bar and view - iOS 7 【发布时间】:2013-09-20 16:01:06 【问题描述】:

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

在 iOS 6 中,没有那条水平线,因此视图会与导航栏融为一体,就好像它们是同一张图片一样。现在我不知道如何删除它...

我尝试调整视图/导航栏的大小,但没有帮助。有什么想法吗?

【问题讨论】:

这看起来像一个,嗯,有趣的应用程序。 :) 谢谢 :P 但它受版权保护 ^_^ 【参考方案1】:

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

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

【讨论】:

你也应该添加这一行:[[UINavigationBar appearance] setTranslucent:NO];否则导航栏将完全透明【参考方案2】:

添加这个:

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

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

【讨论】:

消除了阴影,但另一个答案消除了暗淡的外观,希望我能接受这两个答案:) 谢谢,它有帮助。像魅力一样工作:)【参考方案3】:

试试

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;
   

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

【讨论】:

这从导航栏中删除了暗淡效果,但没有删除阴影:)。有没有办法将此添加到 AppDelegate 以对每个导航栏产生影响? (没用:[[UINavigationBar 外观] setTranslucent:YES];)

以上是关于导航栏和视图之间的分隔符 - iOS 7的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 7 中,状态栏和导航栏出现在我的视图边界上

iOS 6 上出现导航栏和表格视图之间的黑条

Monotouch Dialog 部分隐藏在 IOS 7 顶部导航栏和时钟后面

iOS 7 UI 变化:状态栏和导航控制器

导航栏和 ViewControllers 视图之间的 NSLayoutConstraint

在 UITabBarController 中的标签栏和导航视图之间添加 UIView