在 iOS 7 中,导航栏和视图之间有一个灰色分隔符。
在 iOS 6 中,没有那条水平线,因此视图会与导航栏融为一体,就好像它们是同一个图像一样。现在不知道怎么删了。。。
我试过调整视图/导航栏的大小,但没有帮助。有任何想法吗?
在 iOS 7 中,导航栏和视图之间有一个灰色分隔符。
在 iOS 6 中,没有那条水平线,因此视图会与导航栏融为一体,就好像它们是同一个图像一样。现在不知道怎么删了。。。
我试过调整视图/导航栏的大小,但没有帮助。有任何想法吗?
其他答案对我不起作用。要删除分隔符,我必须设置背景图像和阴影图像,如下所示:
[[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];
添加这个:
[[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];
在您的 AppDelegate.m 应用程序中的 didFinishLaunchingWithOptions 方法中
尝试
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;
}
}
依此类推(如果您实际上是从代码中实例化它,它应该是最简单的选择)。